Как заставить sub-product-category использовать шаблон родительской категории

У меня есть иерархические категории продуктов Woocommerce:

Parent X    - child X1    - child X2Parent Y    - child Y1    - child Y2

У меня есть продукты в каждой подкатегории, и ни у одного продукта нет более одной подкатегории. .

Мне нужно отобразить продукты с родительским Y в виде, отличном от представления Parent X

, которое я пытался создать taxonomy-product_cat-parent-x.php и taxonomy-product_cat-parent-y.php

Но это не сработало

Я нашел решение в этой статье для категорий, и в комментариях я нашел приведенный ниже код для таксономий, но он не проверен в соответствии с автором, и он не работал со мной:

/** * Filter the taxonomy hierarchy to inject a parent level of templates. *  * @param string $template The current template. * @return string Filtered taxonomy template. */function new_tax_hierarchy( $template ) {    $term = get_queried_object();    //If not an object, or the object doesn't have a taxonomy, bail.    if ( ! is_object( $term ) || ! isset( $term->taxonomy ) )        return $template;    $taxonomy = $term->taxonomy;    //If the taxonomy isn't hierarchical, bail.    if ( ! is_taxonomy_hierarchical( $taxonomy ) )        return $template;    $templates = array();    $parent_id = $term->parent;    if ( 0 == $parent_id ) {        //Use default values from get_taxonomy_template().        $templates[] = "taxonomy-$taxonomy-{$term->slug}.php";        $templates[] = "taxonomy-$taxonomy.php";        $templates[] = 'taxonomy.php';    } else {        $parent = get_term( $parent_id, $taxonomy );        //Current templates.        $templates[] = "taxonomy-$taxonomy-{$term->slug}.php";        $templates[] = "taxonomy-$taxonomy.php";        //Parent templates.        $templates[] = "taxonomy-$taxonomy-{$parent->slug}.php";        $templates[] = "taxonomy-$taxonomy-{$parent->term_id}.php";        $templates[] = 'taxonomy.php';    }    return locate_template( $templates );}add_filter( 'taxonomy_template', 'new_tax_hierarchy' );

Ответы и комментарии:

werdswords.com/… Это то, что я ищу, это для категорий, но мне это нужно для таксономии (product_cat).
Создан 06-09-2016 08:01 Ali Basheer

Я решил это, столкнувшись с этими двумя проблемами:
1 - использовать template_include в фильтре вместо taxonomy_template

2- Я переставил эти строки в соответствии со своими потребностями.
// Текущий первый
$ templates [] = "category - {$ category-> slug} .php";
$ templates [] = "category - {$ category-> term_id} .php";

// Родитель второй
$ templates [] = "category - {$ parent-> slug} .php";
$ templates [] = "category - {$ parent-> term_id} .php";
$ templates [] = 'category.php';

Итак, вот мой окончательный код:
/ **
* Фильтруйте иерархию таксономии, чтобы внедрить родительский уровень шаблонов.
*
* @param string $ template Текущий шаблон.
* @return string Фильтрованный шаблон таксономии.
* /
function new_tax_hierarchy ($ template) {

    $ term = get_queried_object ();

    // Если не объект или объект не имеет таксономии, поручительство.
    if (! is_object ($ term) ||! isset ($ term-> таксономия))
        вернуть $ шаблон;

    $ таксономия = $ term-> таксономия;

    // Если таксономия не иерархическая, залог.
    if (! is_taxonomy_hierarchical ($ taxonomy))
        вернуть $ шаблон;

    $ templates = array ();
    $ parent_id = $ term-> parent;

    if (0 == $ parent_id) {
        // Используем значения по умолчанию из get_taxonomy_template ().
        $ templates [] = "таксономия- $ таксономия - {$ term-> slug} .php";
        $ templates [] = "taxonomy- $ taxonomy.php";
        $ templates [] = 'taxonomy.php';
    } еще {
        $ parent = get_term ($ parent_id, $ taxonomy);

        // Родительские шаблоны.
        $ templates [] = "таксономия- $ таксономия - {$ parent-> slug} .php";
        $ templates [] = "таксономия- $ таксономия - {$ parent-> term_id} .php";
        $ templates [] = 'taxonomy.php';

        // Текущие шаблоны.
        $ templates [] = "таксономия- $ таксономия - {$ term-> slug} .php";
        $ templates [] = "taxonomy- $ taxonomy.php";
    }

    return locate_template ($ templates);
}
add_filter ('template_include', 'new_tax_hierarchy');
Создан 20-09-2016 11:46