Сделаем возможность у некоторых товаров отключать кнопку купить.
Добавляем поле (чекбокс)
// Создание чекбокса Отключение кнопки Купить
add_action( 'woocommerce_product_options_general_product_data', 'add_new_general_fields' );
function add_new_general_fields() {
global $woocommerce, $post;
echo '<div class="options_group">';
woocommerce_wp_checkbox(
array(
'id' => '_disable_buy',
'wrapper_class' => 'show_if_simple',
'label' => __('Отключить кнопку Купить', 'woocommerce' ),
'description' => __( 'Не выводить в карточке товара кнопку Купить', 'woocommerce' )
)
);
echo '</div>';
}
// Сохранение чекбокса Отключение кнопки Купить
add_action( 'woocommerce_process_product_meta', 'add_general_fields_new_save' );
function add_general_fields_new_save( $post_id ){
if (!empty($_POST['_disable_buy'])) { update_post_meta( $post_id, '_disable_buy', 'yes' ); }
else { delete_post_meta( $post_id, '_disable_buy' ); }
}
Скрываем кнопку Добавить в корзину в карточке товара
function disable_buy_button() {
global $product;
$disable_buy = get_post_meta( $product->get_ID(), '_disable_buy', 1 );
if (!empty($disable_buy)) {
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
}
}
add_action( 'woocommerce_single_product_summary', 'disable_buy_button' );
Изменяем кнопку В корзину в категориях
Тут не получится отключить хуком, т.к. хук отключает все ссылки у всех товаров.
Сначала добавим к товарам новый класс (disable_buy)
add_filter('post_class', 'disable_buy_button_class');
function disable_buy_button_class($class) {
global $product;
$disable_buy = get_post_meta( $product->get_ID(), '_disable_buy', 1 );
if (!empty($disable_buy)) {
$class[] = 'disable_buy';
}
return $class;
}
А далее по этому классу настроим jQuery функцию
jQuery(document).ready(function($){
// Убрать ссылки В корзину у товаров без кнопки Купить
$("li.disable_buy.product").each(function() {
var product_link = $(this).find('span > a').attr("href");
$(this).find("a.add_to_cart_button").text("Подробнее");
$(this).find("a.add_to_cart_button").attr("href", product_link);
$(this).find("a.add_to_cart_button").removeClass("ajax_add_to_cart");
});
});
Либо можно скрывать кнопку CSS классом, если это визуально позволяет шаблон.