【问题标题】:Make is_purchasable hook work with variations and product tags In Woocommerce在 Woocommerce 中使用变体和产品标签使 is_purchasable 挂钩工作
【发布时间】:2019-04-08 08:41:39
【问题描述】:

我试图阻止访问者根据产品标签购买某些产品。

我正在使用'woocommerce_is_purchasable'woocommerce 过滤器,但它不适用于可变产品。

这是我的代码:

    function remove_add_to_cart_for_tag_id ( $purchasable, $product ){

    if( $product->get_tag_ids() == array(181)) {

      $purchasable = false;

    } else {
      return $purchasable;
    }

    if ( $purchasable && $product->is_type( 'variation' ) ) {
        $purchasable = $product->parent->is_purchasable();
    }

    return $purchasable;

}
add_filter( 'woocommerce_is_purchasable', 'remove_add_to_cart_for_tag_id', 10, 2 );
add_filter( 'woocommerce_variation_is_purchasable', 'remove_add_to_cart_for_tag_id', 10, 2 );

我的代码基于此示例:Get is_purchasable hook working for Woocommerce product variations too

任何评论都很好,在此先感谢。

【问题讨论】:

  • 标题中的第 2 部分是什么意思?
  • @Abdul 已经问过另一个类似的问题,我已经引用了那个问题,但我无法以同样的方式解决我的问题。

标签: php wordpress woocommerce custom-taxonomy variations


【解决方案1】:

您的代码中存在一些错误和错误。请尝试以下方法(使其也适用于产品变体)

add_filter( 'woocommerce_is_purchasable', 'remove_add_to_cart_for_tag_id', 10, 2 );
add_filter( 'woocommerce_variation_is_purchasable', 'remove_add_to_cart_for_tag_id', 10, 2 );
function remove_add_to_cart_for_tag_id ( $purchasable, $product ){
    // For product variations (from variable products)
    if ( $product->is_type('variation') ){
        $parent = wc_get_product( $product->get_parent_id() );
        $tag_ids = $parent->get_tag_ids(); 
    } 
    // For other product types
    else {
        $tag_ids = $product->get_tag_ids();
    }

    if( in_array( 181, $tag_ids ) ) {
        $purchasable = false;
    }

    return $purchasable;
}

代码进入您的活动子主题(或活动主题)的 function.php 文件中。它现在应该可以工作了。

【讨论】:

  • Loic TheAztec 看起来代码应该可以完美运行,但结果是一样的,无法购买简单的产品,但仍然可以购买可变产品。还有其他方法可以避免购买由标签标识的某些产品吗?
  • @Noe_Mares 抱歉,但在您的情况下还有其他一些互动。请注意,Is_purchasable 适用于可变产品的每个变体,而不是全局适用于可变产品。
  • 谢谢@Loic TheAztec 当我找到解决方案时,我会在这里发布。
  • 当然可以。我使用的主题替换了woocommerce的许多原生功能,应该有问题。谢谢@LoicTheAztec
  • 代码现在完美运行!!!我的主题存在不兼容的问题,但我已经解决了。今天,您的代码非常适合遇到同样问题的其他人。谢谢。
猜你喜欢
  • 2021-07-10
  • 1970-01-01
  • 1970-01-01
  • 2020-05-21
  • 2021-12-03
  • 2018-10-02
  • 2018-04-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多