
在WooCommerce商店中,我们经常需要在单品页面上添加自定义内容,例如尺码指南、特定商品的促销信息或Elementor模板。这些内容通常通过短代码实现,并使用add_action钩子将其挂载到页面的特定位置。例如,以下代码片段将一个Elementor模板短代码无条件地显示在所有单品页面的摘要区域:
// 在functions.php中添加
add_action( 'woocommerce_single_product_summary', 'sizeguidemen_shortcode_display', 20 );
function sizeguidemen_shortcode_display() {
echo do_shortcode('[elementor-template id="66083"]');
}然而,在某些情况下,我们可能不希望这个短代码在所有商品分类中都显示。例如,尺码指南可能只适用于服装类商品,而配件类商品则不需要。此时,我们就需要引入条件逻辑,根据商品的分类来决定是否执行并显示短代码。
WordPress提供了一个强大的函数has_term(),用于检查当前文章或自定义文章类型(如WooCommerce商品)是否属于一个或多个指定的分类术语(term)。这个函数是实现条件性短代码显示的关键。
has_term()函数的基本语法如下:
has_term( $term, $taxonomy, $post );
为了在特定商品分类中禁用或排除短代码,我们将使用has_term()函数来检查当前商品是否属于这些分类。如果商品属于被排除的分类,我们就阻止短代码的执行。
以下是修改后的代码,用于排除ID为65和slug为accessories的商品分类:
// 在functions.php中添加或修改
add_action( 'woocommerce_single_product_summary', 'sizeguidemen_conditional_shortcode_exclusion', 20 );
function sizeguidemen_conditional_shortcode_exclusion() {
// 定义要排除的商品分类ID或slug列表
// 您可以根据需要添加更多的ID或slug
$excluded_categories = array( 65, 'accessories' ); // 示例:ID 65 和 'accessories' 分类
// 检查当前商品是否属于任何一个被排除的分类
// 如果 has_term() 返回 true,表示商品属于被排除的分类
// 此时,我们使用 '!' 运算符取反,即当商品不属于被排除分类时才执行短代码
if ( ! has_term( $excluded_categories, 'product_cat' ) ) {
// 如果当前商品不属于任何被排除的分类,则执行并显示短代码
echo do_shortcode('[elementor-template id="66083"]');
}
}代码解析:
has_term()函数非常灵活,您可以根据具体需求使用不同的参数组合:
只在特定分类中显示短代码(包含逻辑): 如果您想让短代码只在ID为123的分类中显示,可以使用:
// 只在ID为123的分类中显示短代码
if ( has_term( 123, 'product_cat' ) ) {
echo do_shortcode('[elementor-template id="66083"]');
}使用单个分类Slug:
// 排除 slug 为 'electronics' 的分类
if ( ! has_term( 'electronics', 'product_cat' ) ) {
echo do_shortcode('[elementor-template id="66083"]');
}使用多个分类ID数组:
// 排除 ID 为 123, 456, 789 的分类
$excluded_ids = array( 123, 456, 789 );
if ( ! has_term( $excluded_ids, 'product_cat' ) ) {
echo do_shortcode('[elementor-template id="66083"]');
}使用多个分类Slug数组:
// 排除 slug 为 'tables', 'chairs' 的分类
$excluded_slugs = array( 'tables', 'chairs' );
if ( ! has_term( $excluded_slugs, 'product_cat' ) ) {
echo do_shortcode('[elementor-template id="66083"]');
}通过利用WordPress提供的has_term()函数,我们可以轻松地为WooCommerce单品页面的短代码添加强大的条件逻辑。无论是希望在特定分类中显示短代码,还是在特定分类中禁用短代码,这种方法都提供了极大的灵活性和控制力。正确实施这些条件逻辑不仅能优化用户体验,还能使您的网站内容管理更加精细化和高效。
以上就是WooCommerce:在指定商品分类中条件性禁用或排除短代码的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号