php - 使 is_purchasable Hook 与 Woocommerce 中的变体和产品标签一起使用

标签 php wordpress woocommerce custom-taxonomy product-variations

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

我正在使用 '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

最佳答案

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

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 文件中。现在应该可以工作了。

关于php - 使 is_purchasable Hook 与 Woocommerce 中的变体和产品标签一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53146763/

相关文章:

php - 在 WooCommerce 结账中添加一个自定义复选框,其值显示在管理员编辑顺序中

javascript - Woocommerce 产品选项有条件

php - 打开 zip 并阅读内容

php - 使用 Javascript 和 PHP 的设计模式

php - 三个内部样式表和没有脚本标签是否适合我的网页?

javascript - 调整窗口大小时,光滑的 slider 没有响应

wordpress - Woocommerce 按类别隐藏价格 + is_product_category()、is_shop()

php - 日语文本输出为问号或 goobledy gook

php - 在 POSTMAN 中添加 curl -u

javascript - 如何在 Wordpress Fancybox 图像上将文本超链接到外部网站