В 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 );
Я хотел бы удалить кнопку добавления в корзину на всех страницах, если пользователь не вошел в систему как клиент.
Кто-нибудь может помочь, пожалуйста?
Вместо вашего фактического кода попробуйте следующее, которое будет делать все везде и удалит кнопку добавления в корзину, когда пользователь не вошел в систему:
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 вашей активной дочерней темы (или активной темы).
Спасибо, но у меня есть еще одна проблема, когда я добавляю это. Я думал, что это также исправит это, но, по-видимому, проблема была не в этом. Я скрываю изображение продукта на основе роли пользователя «клиент», и это работает, но для переменных продуктов, когда я выбираю переменную, изображение снова появляется. Есть идеи, как это исправить? Или, может быть, чтобы скрыть варианты продукта, когда пользователь не является покупателем?