我在我的功能中为我的旧/已停产产品创建(复制)自定义发布状态。php和一切都很好。
现在,我想通过删除购物车按钮和状态产品(在本例中为“过期”),使这些旧产品无法购买。
我想我必须使用get_post_status()
和
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\');
或通过使用$is_purchasable=false
.但坦率地说,我是一个乞丐,我不知道怎样才能从头开始创造它。。。
Edit :
我尝试了两种不同的选择,但都不管用。。。function remove_cart_button_expired_product (){
global $product;
$id = get_the_ID();
$post_status = get_post_status($id);
if ($post_status === \'expired\') {
//echo $id; // working
//echo $post_status; // working
remove_action( \'woocommerce_after_shop_loop_item\', \'woocommerce_template_loop_add_to_cart\',1);
remove_action( \'woocommerce_single_product_summary\', \'woocommerce_template_single_add_to_cart\',1);
}
}
add_action(\'wp\', \'remove_cart_button_expired_product\');
这个不起作用可能是因为我的Divi主题。。。function product_not_purchasable(){
global $product;
$id = $product->get_id();
$post_status = get_post_status($id);
if ($post_status === \'expired\') {
//echo $id; // working
//echo $post_status; // working
$purchasable = false;
return $purchasable;
}
}
add_filter(\'woocommerce_is_purchasable\', \'product_not_purchasable\');
我发现这一行代码比前一行代码更可取,但当我试图在购物车中添加产品时,它会破坏我的网站(与帖子状态无关)。