Woocommerce: проверьте, относится ли текущий товар к дочерней категории «XXX» - PullRequest
0 голосов
/ 09 января 2019

Я работаю над 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 голосов
/ 09 января 2019

Используемая функция проверяет только таксономию категории. используйте это на страницах продукта. Я заменил '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', и замените 'category' на $ tax в строке 5. Затем, когда вы вызываете функцию на страницах продукта, передайте 'product_cat' в качестве третьего параметра. К вашему сведению, если вы сделаете это таким образом, вам потребуется заменить in_category на has_term

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...