Вопрос решен, вот код который нужно вставить в functions.php (а лучше создать сниппет через плагин и не трогать functions.php).
Код нашел на CodeRoad, автор: LoicTheAztec. Я немножко модифицировал его под свои нужды.
Незарегистрированные пользователи и пользователи с ролью "Клиент" будут видеть вместо цены надпись у товаров, у которых вес = 1.
//Текст, который будет вместо цены
function product_price_replacement(){
return 'Для профессионального использования';
}
// Замена цены на текст
add_filter( 'woocommerce_get_price_html', 'filter_get_price_html_callback', 10, 2 );
function filter_get_price_html_callback( $price, $product ){
if(( $product->get_weight()== 1 ) and ((!is_user_logged_in() or current_user_can('customer')) )) {
$price = product_price_replacement();
}
return $price;
}
// Отключение возможности добавить в корзину
add_filter( 'woocommerce_variation_is_purchasable', 'woocommerce_is_purchasable_filter_callback', 10, 2 );
add_filter('woocommerce_is_purchasable', 'woocommerce_is_purchasable_filter_callback', 10, 2 );
function woocommerce_is_purchasable_filter_callback( $purchasable, $product ) {
$product_id = $product->get_parent_id() > 0 ? $product->get_parent_id() : $product->get_id();
if( (( $product->get_weight()== 1 ) and ((!is_user_logged_in() or current_user_can('customer')) ))) {
$purchasable = false;
}
return $purchasable;
}