【问题标题】:Woocommerce is_purchasable hook for variable products用于可变产品的 Woocommerce is_purchasable 挂钩
【发布时间】:2021-07-10 05:07:25
【问题描述】:

我正在使用以下代码使 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 );

我错过了什么?

【问题讨论】:

    标签: php wordpress woocommerce product hook-woocommerce


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      要使用的正确代码是:

      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 文件中。经过测试并且可以工作。

      【讨论】:

      • 谢谢你 - 我会更新附件。就禁用“添加到购物车”按钮而言 - 是否有办法将其删除,因此功能与简单产品相同(以上在简单产品上完全删除了“添加到购物车”按钮 - 无论如何在单个产品页面上- 在存档页面上,它会将其替换为“阅读更多按钮”,这很好)
      • @EthanThomas 我添加了更多代码以删除可变产品上的添加到购物车按钮...
      • 似乎没有删除 ATC 按钮 LoicTheAztec。理想情况下,我想要实现的是整个购物车表单被删除(就像它在一个简单的产品页面上)所以下拉,数量选择器和太购物车按钮不存在。为清楚起见,这样做的原因是,当用户未登录时,我在其位置插入了另一段文本和登录按钮,因此除了添加到购物车按钮之外还显示此内容会令人困惑
      • @EthanThomas 也许是因为您的主题、插件或您自己造成了一些自定义问题。自 WooCommerce 3 以来,我的答案代码运行良好(在店面主题下的最后一个 WooCommerce 版本上测试)。
      • 没问题,我会用主题开发者来研究这个。非常感谢您的帮助。
      猜你喜欢
      • 1970-01-01
      • 2019-04-08
      • 1970-01-01
      • 1970-01-01
      • 2017-07-02
      • 1970-01-01
      • 2018-10-02
      • 1970-01-01
      • 2020-05-21
      相关资源
      最近更新 更多