在 Woocommerce 中使 is_purchasable 挂钩与变体和产品标签一起工作
Make is_purchasable hook work with variations and product tags In Woocommerce
我试图阻止访问者根据产品标签购买某些产品。
我正在使用 '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 );
我的代码基于这个例子:
任何意见都很受欢迎,提前致谢。
您的代码中存在一些错误。请尝试以下方法 (使其也适用于产品变体):
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 文件。它现在应该可以工作了。
我试图阻止访问者根据产品标签购买某些产品。
我正在使用 '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 );
我的代码基于这个例子:
任何意见都很受欢迎,提前致谢。
您的代码中存在一些错误。请尝试以下方法 (使其也适用于产品变体):
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 文件。它现在应该可以工作了。