Удалить кнопку "Добавить корзину" в Woocommerce для определенной категории товаров
У меня проблема, как удалить корзину из категории товаров. Это работает просто отлично, если я применяю его к определенному идентификатору или ко всем в целом, но я не могу сделать это для категории. Ниже приведен мой код, который я сделал по этому поводу.
Кроме того, я изо всех сил пытаюсь применить этот же шаблон к разделу связанных статей, поэтому буду признателен за любую помощь.
Спасибо.
//function for deleting ....
function remove_product_description_add_cart_button(){
global $product;
//Remove Add to Cart button from product description of product with id 1234
if ($product->id == 188){
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
}
add_action('wp','remove_product_description_add_cart_button');
}
3 answers
Чтобы заставить его работать с категорией продуктов, вы можете использовать условную функцию WordPress has_term()
таким образом:
//function for deleting ....
function remove_product_description_add_cart_button(){
global $product;
// Set HERE your category ID, slug or name (or an array)
$category = 'categoryslug';
//Remove Add to Cart button from product description of product with id 1234
if ( has_term( $category, 'product_cat', $product->id ) )
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
}
add_action('wp','remove_product_description_add_cart_button');
Код входит в function.php файл вашей активной дочерней темы (или темы). Или также в любом файле php плагина.
Вы должны попробовать что-то вроде этого:
function remove_product_description_add_cart_button(){
global $product;
$termsOfProduct = wp_get_post_terms( $product->id, 'product_cat' );
if (in_array("CatToFind", $termsOfProduct)) {
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
}
add_action('wp','remove_product_description_add_cart_button');
}
Категория товаров в Woocommerce - это просто термины. Wp_get_post_terms позволяют находить любые категории, связанные с публикацией (идентификатор продукта).
Ссылка: https://codex.wordpress.org/Function_Reference/wp_get_post_terms
Вы можете попробовать что-то вроде этого
function western_custom_buy_buttons(){
$product = get_product();
if ( has_term( 'category1', 'product_cat') ){
// removing the purchase buttons
remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart' );
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
remove_action( 'woocommerce_simple_add_to_cart', 'woocommerce_simple_add_to_cart', 30 );
remove_action( 'woocommerce_grouped_add_to_cart', 'woocommerce_grouped_add_to_cart', 30 );
remove_action( 'woocommerce_variable_add_to_cart', 'woocommerce_variable_add_to_cart', 30 );
remove_action( 'woocommerce_external_add_to_cart', 'woocommerce_external_add_to_cart', 30 );
}
}
add_action( 'wp', 'western_custom_buy_buttons' );
Ссылка: https://www.themelocation.com/how-to-remove-add-to-cart-button-from-a-certain-category-woocommerce/