WooCommerce-根据产品(POST)状态删除购物车按钮

时间:2019-09-24 作者:Kentin.R

我在我的功能中为我的旧/已停产产品创建(复制)自定义发布状态。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\');
我发现这一行代码比前一行代码更可取,但当我试图在购物车中添加产品时,它会破坏我的网站(与帖子状态无关)。

1 个回复
最合适的回答,由SO网友:Kentin.R 整理而成

几天后终于找到了我的解决方案。

万一有人也这么做

function test_expired_product(){
    $id = get_the_ID();
    $post_status = get_post_status($id);
    $terms= array(\'cursus-annuel\');


    if ($post_status === \'expired\' || $post_status === \'canceled\') {
        //echo $id;             // working
        //echo $post_status;    // working

        add_filter(\'woocommerce_is_purchasable\', \'__return_false\');
        add_action( \'woocommerce_single_product_summary\', \'expired_product_message\', 20 );
        return;
    }

    if( has_term( $terms, \'product_cat\' ) ){
        add_filter(\'woocommerce_is_purchasable\', \'__return_false\');
        add_action( \'woocommerce_single_product_summary\', \'unpurchasable_product_message\', 20 );
        return;
    }
}
add_action(\'wp\',\'test_expired_product\');

function expired_product_message() {
    echo \'<p style="color:#e00000;">Ce produit n\\\'est plus disponible.</p>\';
}

function unpurchasable_product_message() {
    echo \'<p style="color:#e00000;">Ce produit ne peut pas être acheté en ligne. Veuillez nous contacter afin de reserver ce cours.</p>\';
}

相关推荐

Admin Theme customization

我遵循wordpress codex网站上关于通过插件创建管理主题的说明。我激活了插件,但我的样式表没有包含在<head>.. 这是我的代码:add_action( \'admin_init\', \'kd_plugin_admin_init\' ); add_action( \'admin_menu\', \'kd_plugin_admin_menu\' ); function kd_plugin_admin_init() { /* Register