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 中文论坛提问,会有专业技术团队提供相关帮助。