Woocommerce is_purchasable 可变产品挂钩

时间:2021-04-15 07:07:07

标签: php wordpress woocommerce product hook-woocommerce

我正在使用以下代码使 woocommerce 上的所有产品无法购买,除非用户登录。

function et_remove_atc(){
    
        
    if( ! is_user_logged_in() ){
    
        return false;
    
    }else{
        
        return true;
        
    }
    
}

add_filter( 'woocommerce_is_purchasable', 'et_remove_atc' );

这仅适用于简单产品,不适用于可变产品。我尝试添加以下附加过滤器,但这不起作用。

add_filter( 'woocommerce_variation_is_purchasable', 'et_remove_atc', 10, 2 );

我错过了什么?

2 个答案:

答案 0 :(得分:1)

您对可变产品及其变体使用了正确的挂钩。请注意,可变产品上的添加到购物车按钮对客人来说将保持灰色(禁用)。如果不是这种情况,则可能是由于插件、您的主题自定义或您进行的其他一些自定义。

要使用的正确代码是:

add_filter( 'woocommerce_is_purchasable', 'avoid_guest_purchases' );
add_filter( 'woocommerce_variation_is_purchasable', 'avoid_guest_purchases' );
function avoid_guest_purchases( $is_purchasable ){
    if( ! is_user_logged_in() ){
        return false;
    }
    return $is_purchasable;
}

代码位于活动子主题(或活动主题)的functions.php 文件中。经测试有效。


要删除客人的变量添加到购物车按钮(在单个产品页面上),请使用以下内容:

add_action( 'woocommerce_single_product_summary', 'remove_variable_add_to_cart_button', 1 );
function remove_variable_add_to_cart_button() {
    global $product;

    // For variable product types (keeping attribute select fields)
    if( $product->is_type( 'variable' ) && is_user_logged_in() ) {
        remove_action( 'woocommerce_single_variation', 'woocommerce_single_variation_add_to_cart_button', 20 );
    }
}

代码位于活动子主题(或活动主题)的functions.php 文件中。经测试有效。

答案 1 :(得分:0)

这是默认的 woocommerce 设置。您是否允许来宾客户。

取消选中复选框允许客户在没有帐户的情况下下订单

查看此屏幕截图:https://prnt.sc/11fj0kc