【问题标题】:How to exclude Product Category ID from Shortcode Hook inside functions.php - WooCommerce如何从functions.php中的简码挂钩中排除产品类别ID - 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 新手并尝试这样做,但不起作用。 :/

【问题讨论】:

    标签: php woocommerce hook


    【解决方案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,但它仍然显示在配饰上。也许我做错了什么。无论如何,我非常感谢您在 StackOverflow 上的帮助!
    • 还是不清楚,抱歉:|您的代码适用于单个产品页面。您可以检查当前产品是否属于附件,如果是,则返回简码。如果您想反其道而行之,只需使用“!”在 has_term() 前面签名,这样就可以否定它
    • 太棒了,很高兴它有帮助:)
    猜你喜欢
    • 2018-12-06
    • 2018-05-17
    • 2021-06-09
    • 2019-08-05
    • 1970-01-01
    • 2021-09-11
    • 2019-02-06
    • 2018-11-09
    • 2013-08-11
    相关资源
    最近更新 更多