Я пытаюсь отключить добавление в корзину определенных продуктов, для которых установлен флажок «Призыв к заказу» (см. Код ниже) в редакторе продуктов.
add_action( 'woocommerce_product_options_general_product_data', 'custom_general_product_data_custom_fields' );
/**
* Add `Call to Order` field in the Product data's General tab.
*/
function custom_general_product_data_custom_fields() {
// Checkbox.
woocommerce_wp_checkbox(
array(
'id' => '_not_ready_to_sell',
'wrapper_class' => 'show_if_simple',
'label' => __( 'Call to Order', 'woocommerce' ),
'description' => __( '', 'woocommerce' )
)
);
}
add_action( 'woocommerce_process_product_meta', 'custom_save_general_proddata_custom_fields' );
/**
* Save the data values from the custom fields.
* @param int $post_id ID of the current product.
*/
function custom_save_general_proddata_custom_fields( $post_id ) {
// Checkbox.
$woocommerce_checkbox = isset( $_POST['_not_ready_to_sell'] ) ? 'yes' : 'no';
update_post_meta( $post_id, '_not_ready_to_sell', $woocommerce_checkbox );
}
add_filter( 'woocommerce_is_purchasable', 'custom_woocommerce_set_purchasable', 10, 2);
/**
* Mark "Not ready to sell" products as not purchasable.
*/
function custom_woocommerce_set_purchasable() {
$not_ready_to_sell = get_post_meta( get_the_ID(), '_not_ready_to_sell' , true);
return ( 'yes' == $not_ready_to_sell ? false : true );
}
add_filter( 'woocommerce_product_add_to_cart_text', 'custom_product_add_to_cart_text' );
/**
* Change "Read More" button text for non-purchasable products.
*/
function custom_product_add_to_cart_text() {
$not_ready_to_sell = get_post_meta( get_the_ID(), '_not_ready_to_sell', true );
if ( 'yes' === $not_ready_to_sell ) {
return __( 'Call to Order', 'woocommerce' );
} else {
return __( 'Add to Cart', 'woocommerce' );
}
}
Продукты, на которых установлен флажок, на самом деле нельзя приобрести, что является желаемым результатом.
Проблема, с которой я сталкиваюсь, заключается в том, что когда я нажимаю «Добавить в корзину» для покупаемых товаров (без галочки) на странице каталога товаров, я перенаправляюсь на страницу товара и сообщение WooCommerce по умолчанию «Извините, это товар нельзя купить. " появляется. Что должно произойти, так это то, что при нажатии кнопки «Добавить в корзину» товар автоматически добавляется в корзину.
Также со страницы одного товара я могу без проблем добавить покупную корзину.
Я не уверен, почему это происходит таким образом. Есть идеи?