Intereting Posts
Может ли детская тема, основанная на теме Starker, быть выпущена как бесплатная тема для публичного использования? Как вывести изображение или значок для выбранного флажка в специальном сообщении Ползунок Fullwidth с использованием фонового изображения Flexslider WordPress Для чего используется wp-includes / certificates / ca-bundle.crt? Поиск wp_query не содержит ключевых слов для нескольких слов Как создать и установить отдельный файл шаблона для статей в системе Genesis? (WordPress) Как устаревшая функция может привести к сбою сайта WordPress при обновлении Как создать пользовательский тип сообщения, например, get_categories для настраиваемого типа сообщений и фильтрации по пользовательской таксономии (бренду) и перечислить дочерние категории определенной категории Неработающие письма WP Cron update_user_meta (): невидимое хранилище данных Ограничение длины Excerpt не работает для Sticky Posts Удалить "Категория:", "Тег:", "Автор:" из the_archive_title query_posts на основе meta_key Как упорядочить порядок отображения плагинов под каждым сообщением?

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

У меня есть эти иерархические категории продуктов 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' );