如何从functions.php中的简码挂钩中排除产品类别ID - WooCommerce

Posted

技术标签:

【中文标题】如何从functions.php中的简码挂钩中排除产品类别ID - WooCommerce【英文标题】:How to exclude Product Category ID from Shortcode Hook inside functions.php - WooCommerce 【发布时间】:2021-12-19 22:01:56 【问题描述】:

我正在尝试排除/禁用我添加到特定产品类别的 woocommerce 单一产品模板中的简码。

functions.php 中的代码是这样的:

add_action( 'woocommerce_single_product_summary', 'sizeguidemen', 20 );
 
function sizeguidemen() 
    echo do_shortcode('[elementor-template id="66083"]');

我们如何排除/禁用特定产品类别的简码?

我认为应该是array( 'product_cat', '65' );

我是 php 新手并尝试这样做,但不起作用。 :/

【问题讨论】:

【参考方案1】:

条件逻辑允许您仅在满足某些条件时运行您的函数。

在您的情况下,您正在查看单个产品页面,并且仅当类别为“任何 ID”时才需要运行函数。

通过查看WooCommerce Conditional Logic – Tags, Examples & PHP 教程,特别是在“PHP:如果产品属于某个类别,请执行某些操作”部分,您的代码将变为以下内容,其中“123”是您希望其工作的类别 ID :

add_action( 'woocommerce_single_product_summary', 'sizeguidemen', 20 );
 
function sizeguidemen() 
    if ( has_term( 123, 'product_cat' ) ) 
        echo do_shortcode('[elementor-template id="66083"]');
    

您甚至可以使用类别“slug”而不是“123”,也可以使用这些类别的数组,例如[123, 456, 789] 或 ['tables', 'chairs']

【讨论】:

嗨!太感谢了!!然而,问题是我有子类别“配件”,它也包含在父“男士”中。因此,如果我使用您提供的代码并且 has_term 是父类别 - 它也会显示在子类别中。这就是为什么我一直在寻找一种方法来“排除”或不在某种可以指向特定子类别的功能中。这可能吗?顺便说一句,我是你的超级粉丝。我从你的网站学到了很多东西,这绝对是惊人的。我目前正在使用 Shoptimizer 主题,而您一直是其中的关键部分。 谢谢!你不能把子类别放在 has_term() 里面吗? 嗨!我没有把身份证放在里面。我的产品具有以下类别:男士、男士配饰、配饰 - 我只想禁用“配饰”上的挂钩,但保留男士和男士配饰的挂钩。我尝试在 has_term() 中仅放置男士和男士配饰 ID,但它仍然显示在配饰上。也许我做错了什么。无论如何,我非常感谢您在 *** 上的帮助! 还是不清楚,抱歉:|您的代码适用于单个产品页面。您可以检查当前产品是否属于附件,如果是,则返回简码。如果您想反其道而行之,只需使用“!”在 has_term() 前面签名,这样就可以否定它 太棒了,很高兴它有帮助:)

以上是关于如何从functions.php中的简码挂钩中排除产品类别ID - WooCommerce的主要内容,如果未能解决你的问题,请参考以下文章

如何在URL中带有特定字符串的页面/帖子中执行短代码?

Woocommerce 如何从模板重定向挂钩中排除 myaccount 的子页面(端点)?

显示每月第一个工作日的 WordPress 函数和简码

添加简码时未定义 WordPress 功能

php 通过functions.php为WP添加FB Pixel,以便在FB指标中排除您的IP地址

Woocommerce - 创建优惠券时挂钩