取消设置 woocommerce 中特定产品类别的产品标签
Unset product tabs for specific product categories in woocommerce
我正在使用来自这个答案的代码:
代码如下:
add_filter( 'woocommerce_product_tabs', 'conditionaly_removing_product_tabs', 98 );
function conditionaly_removing_product_tabs( $tabs ) {
// Get the global product object
global $product;
// Get the current product ID
$product_id = method_exists( $product, 'get_id' ) ? $product->get_id() : $product->id;
// Define HERE your targetted products IDs in this array <=== <=== <===
$target_products_ids = array(123,152,162);
// If the current product have the same ID than one of the defined IDs in your array,…
// we remove the tab.
if(in_array($product_id, $target_products_ids)){
// KEEP BELOW ONLY THE TABS YOU NEED TO REMOVE <=== <=== <=== <===
unset( $tabs['description'] ); // (Description tab)
unset( $tabs['reviews'] ); // (Reviews tab)
unset( $tabs['additional_information'] ); // (Additional information tab)
}
return $tabs;
}
此代码可以很好地取消设置或隐藏特定产品的标签。
相反,我想取消设置或隐藏特定产品类别的标签。
如何针对产品类别进行操作?
试试下面的代码
add_filter( 'woocommerce_product_tabs', 'conditionaly_removing_product_tabs', 99 );
function conditionaly_removing_product_tabs( $tabs ) {
// Get the global product object
global $product;
// Get the current product ID
$product_id = method_exists( $product, 'get_id' ) ? $product->get_id() : $product->id;
//get all categories
$terms = wp_get_post_terms( $product_id, 'product_cat' );
foreach ( $terms as $term )
{
$categories[] = $term->slug;
}
if ( in_array( 'Your-product-categories-slug', $categories ) ) {
unset( $tabs['description'] ); // (Description tab)
unset( $tabs['reviews'] ); // (Reviews tab)
unset( $tabs['additional_information'] ); // (Additional information tab)
}
return $tabs;
}
Edit for check more then 1 categories
检查超过 1 个使用的类别 has_term()
$product_cats=array('Your-product-categories-slug1','Your-product-categories-slug2','Your-product-categories-slug3');
if( has_term( $product_cats, 'product_cat', $product_id ) ){
.....
}
作为最初来自我的一个答案的代码,只需更改 2 行并使用 WordPress 条件函数即可使其适用于产品类别非常简单 has_term()
:
add_filter( 'woocommerce_product_tabs', 'conditionaly_removing_product_tabs', 99 );
function conditionaly_removing_product_tabs( $tabs ) {
// Get the global product object
global $product;
// Get the current product ID
$product_id = $product->get_id();
// Define HERE your targeted categories (Ids, slugs or names) <=== <=== <===
$product_cats = array( 'clothing', 'posters' );
// If the current product have the same ID than one of the defined IDs in your array,…
// we remove the tab.
if( has_term( $product_cats, 'product_cat', $product_id ) ){
// KEEP BELOW ONLY THE TABS YOU NEED TO REMOVE <=== <=== <=== <===
unset( $tabs['description'] ); // (Description tab)
unset( $tabs['reviews'] ); // (Reviews tab)
unset( $tabs['additional_information'] ); // (Additional information tab)
}
return $tabs;
}
代码进入您的活动子主题(或主题)的 function.php 文件或任何插件文件。
代码在 WooCommerce 中经过测试和工作。
WordPress conditional function has_term()
accept Ids, slugs or names of your product categories…
我正在使用来自这个答案的代码:
代码如下:
add_filter( 'woocommerce_product_tabs', 'conditionaly_removing_product_tabs', 98 );
function conditionaly_removing_product_tabs( $tabs ) {
// Get the global product object
global $product;
// Get the current product ID
$product_id = method_exists( $product, 'get_id' ) ? $product->get_id() : $product->id;
// Define HERE your targetted products IDs in this array <=== <=== <===
$target_products_ids = array(123,152,162);
// If the current product have the same ID than one of the defined IDs in your array,…
// we remove the tab.
if(in_array($product_id, $target_products_ids)){
// KEEP BELOW ONLY THE TABS YOU NEED TO REMOVE <=== <=== <=== <===
unset( $tabs['description'] ); // (Description tab)
unset( $tabs['reviews'] ); // (Reviews tab)
unset( $tabs['additional_information'] ); // (Additional information tab)
}
return $tabs;
}
此代码可以很好地取消设置或隐藏特定产品的标签。
相反,我想取消设置或隐藏特定产品类别的标签。
如何针对产品类别进行操作?
试试下面的代码
add_filter( 'woocommerce_product_tabs', 'conditionaly_removing_product_tabs', 99 );
function conditionaly_removing_product_tabs( $tabs ) {
// Get the global product object
global $product;
// Get the current product ID
$product_id = method_exists( $product, 'get_id' ) ? $product->get_id() : $product->id;
//get all categories
$terms = wp_get_post_terms( $product_id, 'product_cat' );
foreach ( $terms as $term )
{
$categories[] = $term->slug;
}
if ( in_array( 'Your-product-categories-slug', $categories ) ) {
unset( $tabs['description'] ); // (Description tab)
unset( $tabs['reviews'] ); // (Reviews tab)
unset( $tabs['additional_information'] ); // (Additional information tab)
}
return $tabs;
}
Edit for check more then 1 categories
检查超过 1 个使用的类别 has_term()
$product_cats=array('Your-product-categories-slug1','Your-product-categories-slug2','Your-product-categories-slug3');
if( has_term( $product_cats, 'product_cat', $product_id ) ){
.....
}
作为最初来自我的一个答案的代码,只需更改 2 行并使用 WordPress 条件函数即可使其适用于产品类别非常简单 has_term()
:
add_filter( 'woocommerce_product_tabs', 'conditionaly_removing_product_tabs', 99 );
function conditionaly_removing_product_tabs( $tabs ) {
// Get the global product object
global $product;
// Get the current product ID
$product_id = $product->get_id();
// Define HERE your targeted categories (Ids, slugs or names) <=== <=== <===
$product_cats = array( 'clothing', 'posters' );
// If the current product have the same ID than one of the defined IDs in your array,…
// we remove the tab.
if( has_term( $product_cats, 'product_cat', $product_id ) ){
// KEEP BELOW ONLY THE TABS YOU NEED TO REMOVE <=== <=== <=== <===
unset( $tabs['description'] ); // (Description tab)
unset( $tabs['reviews'] ); // (Reviews tab)
unset( $tabs['additional_information'] ); // (Additional information tab)
}
return $tabs;
}
代码进入您的活动子主题(或主题)的 function.php 文件或任何插件文件。
代码在 WooCommerce 中经过测试和工作。
WordPress conditional function
has_term()
accept Ids, slugs or names of your product categories…