Woocommerce:检查当前产品是否在子类别“ XXX”中

时间:2019-01-09 20:14:37

标签: php wordpress plugins woocommerce

我正在处理WP single.php(已安装woocommerce)。 我需要检查当前页面是否是产品页面:如果是,还请检查该产品是否在XXX的子类别中。

我找到了这段代码:

if ( ! function_exists( 'post_is_in_descendant_category' ) ) {
    function post_is_in_descendant_category( $cats, $_post = null ) {
        foreach ( (array) $cats as $cat ) {
            // get_term_children() accepts integer ID only
            $descendants = get_term_children( (int) $cat, 'category' );
            if ( $descendants && in_category( $descendants, $_post ) )
                return true;
        }
        return false;
    }
}

这在我的常规页面上效果很好,但在我的产品页面上效果不佳。

现在我当前使用此代码:

if ( is_product() && has_term( 'XXX', 'product_cat' ) ) {

问题是这不检查子类别。有帮助吗?

1 个答案:

答案 0 :(得分:1)

您使用的功能仅检查类别分类法。在产品页面上使用此功能。我已经将'category'替换为'product_cat',并将in_category替换为has_term,因为这仅适用于类别

<?php
if (!function_exists('product_is_in_descendant_category')) {
    function product_is_in_descendant_category($cats, $_post = null)
    {
        foreach ((array)$cats as $cat) {
// get_term_children() accepts integer ID only
            $descendants = get_term_children((int)$cat, 'product_cat');
            if ($descendants && has_term($descendants, 'product_cat', $_post)) {
                return true;
            }
        }

        return false;
    }
}

或向第一个读取$ tax ='category'的函数添加第三个参数,并在第5行用$ tax替换'category'。然后在产品页面上调用该函数时,将'product_cat'作为第三个参数。仅供参考,这样做还需要您将in_category替换为has_term