WooCommerce 和 WordPress 的条件标签(也可以使用 “WooCommerce 和 WordPress 条件逻辑”)可以在您的 functions.php 中使用,以根据特定条件显示内容。例如,您可以在单个 PHP 函数中显示不同类别的不同内容。

您可以在这里找到 WooCommerce 条件标签列表和 WordPress 条件标签。我不认为粘贴它们是值得的,所以请使用这两个链接作为参考 – 事实上,在这个博客文章中,我想给您举例,可能是您学习 WooCommerce 定制的最好方法。

您在 WooCommerce 单一产品页面上工作吗?

WooCommerce 中的单一产品页面的好东西是 WordPress 知道他们是 “帖子” 。所以,您可以使用 is_single 。单个产品页面的挂钩列表可以在这里找到。

PHP:仅在单个产品页面上执行某些操作

add_action( 'woocommerce_before_main_content', 'bbloomer_single_product_pages' );

function bbloomer_single_product_pages() {

if ( is_product() ) {
echo 'Something';
} else {
echo 'Something else';
}

}

PHP:如果产品 ID = XYZ,请执行某些操作

add_action( 'woocommerce_after_single_product_summary', 'bbloomer_single_product_ID' );

function bbloomer_single_product_ID() {

if ( is_single( '17' ) ) {
echo 'Something';
} elseif ( is_single( '56' ) ) {
echo 'Something else';
}

}

PHP:如果产品属于类别,请执行某些操作

add_action( 'woocommerce_after_single_product_summary', 'bbloomer_single_category_slug' );

function bbloomer_single_category_slug() {

if ( has_term( 'chairs', 'product_cat' ) ) {
echo 'Something';
} elseif ( has_term( 'tables', 'product_cat' ) ) {
echo 'Something else';
}

}

PHP:如果产品属于标签,请执行某些操作

add_action( 'woocommerce_after_single_product_summary', 'bbloomer_single_tag_slug' );

function bbloomer_single_tag_slug() {

if ( has_term( 'blue', 'product_tag' ) ) {
echo 'Something';
} elseif ( has_term( 'red', 'product_tag' ) ) {
echo 'Something else';
}

}

PHP:如果产品出售,做某事

add_action( 'woocommerce_after_single_product_summary', 'bbloomer_single_on_sale' );

function bbloomer_single_on_sale() {

if ( $product->is_on_sale() ) {
 // do something
}

}

PHP:做一些事情,如果产品简单,变量,外部…

add_action( 'woocommerce_after_single_product_summary', 'bbloomer_single_product_type' );

function bbloomer_single_product_type() {

if( $product->is_type( 'simple' ) ){
 // do something
} elseif( $product->is_type( 'variable' ) ){
 // do something
} elseif( $product->is_type( 'external' ) ){
 // do something
} elseif( $product->is_type( 'grouped' ) ){
 // do something
} 

}

PHP:如果产品可下载,请执行某些操作

add_action( 'woocommerce_after_single_product_summary', 'bbloomer_single_downloadable' );

function bbloomer_single_downloadable() {

if( $product->is_downloadable() ){
 // do something
} 

}

PHP:只在相关产品上做某事

相关产品由 “循环” 生成。有时您可能只想在单一产品页面上使用 PHP(不包括相关的)或反之亦然。

下面的代码段仅在单个产品页面上隐藏,仅在相关产品部分。

add_filter( 'woocommerce_variable_price_html', 'bbloomer_remove_variation_price', 10, 2 );
 
function bbloomer_remove_variation_price( $price ) {

global $woocommerce_loop;

if ( is_product() && $woocommerce_loop['name'] == 'related' ) {
$price = '';
}

return $price;
}

2. Are you working on the WooCommerce Shop/Category Page?

You can find all the shop/archive WooCommerce hooks here. Let’s see how to use conditional logic on these “loop” pages:

PHP: do something on the Shop page only

add_action( 'woocommerce_before_main_content', 'bbloomer_loop_shop' );

function bbloomer_loop_shop() {

if ( is_shop() ) {
echo 'This will show on the Shop page';
} else {
echo 'This will show on all other Woo pages';
}

}

PHP: do something on each product on the loop pages

add_action( 'woocommerce_after_shop_loop_item', 'bbloomer_loop_per_product' );
 
function bbloomer_loop_per_product() {
 
if ( has_term( 'chairs', 'product_cat' ) ) {
echo 'Great chairs!';
} elseif ( has_term( 'tables', 'product_cat' ) ) {
echo 'Awesome tables!';
}
 
}

PHP: do something on category pages only

add_action( 'woocommerce_before_main_content', 'bbloomer_loop_cat' );

function bbloomer_loop_cat() {

if ( is_product_category() ) {
echo 'This will show on every Cat pages';
} else {
echo 'This will show on all other Woo pages';
}

}

PHP: do something based on category name

add_action( 'woocommerce_before_main_content', 'bbloomer_loop_cat_slug' );

function bbloomer_loop_cat_slug() {

if ( is_product_category( 'books' ) ) {
echo 'This will show on the Books Cat page';
} elseif ( is_product_category( 'chairs' ) ) {
echo 'This will show on the Chairs Cat page';
}

}

PHP: do something on tag pages only

add_action( 'woocommerce_before_main_content', 'bbloomer_loop_tag' );

function bbloomer_loop_tag() {

if ( is_product_tag() ) {
echo 'This will show on every Cat pages';
} else {
echo 'This will show on all other Woo pages';
}

}

PHP: do something based on tag name

add_action( 'woocommerce_before_main_content', 'bbloomer_loop_tag_slug' );

function bbloomer_loop_tag_slug() {

if ( is_product_tag( 'red' ) ) {
echo 'This will show on the Red Tag page';
} elseif ( is_product_tag( 'yellow' ) ) {
echo 'This will show on the Yellow Tag page';
}

}

3. Are you working on WooCommerce Pages?

PHP: do something if on a WooCommerce page (excluding cart/checkout)

add_action( 'woocommerce_before_main_content', 'bbloomer_woo_page' );

function bbloomer_woo_page() {

if ( is_woocommerce() ) {
echo 'This will show on Woo pages';
} else {
echo 'This will show on WP pages';
}

}

PHP: do something if on Cart/Checkout

add_action( 'woocommerce_sidebar', 'bbloomer_cart_checkout' );

function bbloomer_cart_checkout() {

if ( is_cart() ) {
echo 'This will show on the Cart sidebar';
} elseif ( is_checkout() ) {
echo 'This will show on the Checkout sidebar';
}

}

4. Are you working on the WooCommerce Cart/Checkout?

PHP: do something if WooCommerce Cart/Checkout has Product ID

function bbloomer_find_id_in_cart() {
global $woocommerce;     
foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values) {
          
    $product = $values['data'];
  
    if ( $product->id == 123 ) {
        // do something
    }
  
}
}


可以在哪里添加此代码?

您可以将 PHP 代码片段放置在主题或子主题的 functions.php 文件的底部(如果是 CSS 代码,请添加到主题的 style.css 文件底部),修改之前建议先备份原始文件,若出现错误请先删除此代码。


这段代码是否正常可用?

或者是您有更好的解决方案想要分享?请到薇晓朵 WooCommerce 中文论坛留言告知,我们希望可以帮到更多国内的 WooCommerce 用户也希望您的参与。


需要关于 WooCommerce 的帮助?

请观看我们提供的免费视频教程或到薇晓朵 WooCommerce 中文论坛提问,会有专业技术团队提供相关帮助。