php商品分类添加字段,php – 根据WooCommerce中的产品自定义字段和产品类别隐藏添加到购物车按钮...

我想在woocommerce产品页面后端添加一个自定义复选框,隐藏前端的“添加到购物车”按钮.我不想完全删除购买该商品的能力(仍然希望能够使用直接添加到购物车网址将商品添加到购物车并购买)所以我不想使用add_filter(‘ woocommerce_is_purchasable’,’my_woocommerce_is_purchasable’,10,2);或类似的.

我目前取得的成就是:

添加自定义复选框

// Display Checkbox

add_action('woocommerce_product_options_general_product_data', 'product_custom_fields_add');

function product_custom_fields_add(){

global $post;

echo '

';

// Custom Product Checkbox Field

woocommerce_wp_checkbox( array(

'id' => '_no_addcart_product',

'desc' => __('show or hide add to cart', 'woocommerce'),

'label' => __('Hide Add To Cart', 'woocommerce'),

'desc_tip' => 'true'

));

echo '

';

}

// Save Checkbox

add_action('woocommerce_process_product_meta', 'product_custom_fields_save');

function product_custom_fields_save($post_id){

// Custom Product Text Field

$no_addcart_product = isset( $_POST['_no_addcart_product'] ) ? 'yes' : 'no';

update_post_meta($post_id, '_no_addcart_product', esc_attr( $no_addcart_product ));

}

还有一个隐藏添加到购物车按钮,具体取决于类别片段.

function remove_product_description_add_cart_button(){

global $product;

$category = 'hide';

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 remove_product_description_add_cart_button() {

if ( is_product() && get_post_meta( $post->ID, '_no_addcart_product', true ) == 'yes' ) {

remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );

}

add_action('wp','remove_product_description_add_cart_button');

非常感谢您提供正确方向的任何帮助.

解决方法:

您可以通过以下方式将两个条件与关系OR参数组合在一起:

add_action( 'woocommerce_single_product_summary', 'remove_product_add_to_cart_button', 4 );

function remove_product_add_to_cart_button(){

global $product;

$term_slug = 'hide'; // Product category term slug

if ( has_term( $term_slug, 'product_cat', $product->get_id() ) || $product->get_meta('_no_addcart_product') === 'yes' )

remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );

}

代码位于活动子主题(或活动主题)的function.php文件中.它应该工作.

Note: Since Woocommerce 3 the WC_Product properties can’t be accessed directly so you need to use the available methods with the WC_Product Object $product.

For the product ID you will use get_id() method like: $product->get_id()

For product custom meta data you can also use get_meta() method

标签:wordpress,php,woocommerce

来源: https://codeday.me/bug/20190522/1152375.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值