WooCommerce удаляет корзину покупок по роли пользователя

#woocommerce

Вопрос:

В Woocommerce у меня есть функция, которая заменяет кнопку «Добавить в корзину» кнопкой, связанной с товаром на страницах магазина и архива:

 function quantity_inputs_for_woocommerce_loop_add_to_cart_link( $html, $product ) {
if ( ! current_user_can('customer') ) {
    $link = get_permalink($product_id);
    $button_text = __( "View product", "woocommerce" );
    $html = '<a href="'.$link.'" class="button alt add_to_cart_button">'.$button_text.'</a>';
}
return $html;
}
add_filter( 'woocommerce_loop_add_to_cart_link', 'conditionally_change_loop_add_to_cart_link', 10, 2 );
 

Я хотел бы удалить кнопку «Добавить в корзину» на всех страницах, если пользователь не вошел в систему как клиент.

Кто-нибудь может помочь, пожалуйста?

Ответ №1:

Вместо вашего фактического кода попробуйте выполнить следующее, которое сделает все везде и удалит кнопку «Добавить в корзину», когда пользователь не вошел в систему:

 add_filter('woocommerce_is_purchasable', 'woocommerce_is_purchasable_filter_callback', 10, 2 );
function woocommerce_is_purchasable_filter_callback( $purchasable, $product ) {
    if ( ! is_user_logged_in() ) 
        $purchasable = false;

    return $purchasable;
}
 

Код входит в function.php файл вашей активной дочерней темы (или активной темы).

Комментарии:

1. Спасибо, но у меня все еще одна проблема, когда я добавляю это. Я думал, что это тоже исправит ситуацию, но, по-видимому, проблема была не в этом. Я скрываю изображение продукта на основе роли пользователя «клиент», и это работает, но для переменных продуктов, когда я выбираю переменную, изображение появляется снова. Есть идеи, как это исправить? Или, может быть, чтобы скрыть варианты продукта, когда пользователь не является клиентом?