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

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

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

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

Мне нужно отображать продукты parent 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' ); 

Solutions Collecting From Web of "Как заставить категорию под-продукта использовать шаблон родительской категории"

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

 // Current first $templates[] = "category-{$category->slug}.php"; $templates[] = "category-{$category->term_id}.php"; // Parent second $templates[] = "category-{$parent->slug}.php"; $templates[] = "category-{$parent->term_id}.php"; $templates[] = 'category.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 ); // Parent templates. $templates[] = "taxonomy-$taxonomy-{$parent->slug}.php"; $templates[] = "taxonomy-$taxonomy-{$parent->term_id}.php"; $templates[] = 'taxonomy.php'; // Current templates. $templates[] = "taxonomy-$taxonomy-{$term->slug}.php"; $templates[] = "taxonomy-$taxonomy.php"; } return locate_template( $templates ); } add_filter( 'template_include', 'new_tax_hierarchy' );