Как отобразить только родительскую категорию в цикле постов WordPress

Вы хотите отображать только родительскую категорию для ваших постов WordPress? По умолчанию большинство тем WordPress отображают список всех категорий,...

Вы хотите отображать только родительскую категорию для ваших постов WordPress?

По умолчанию большинство тем WordPress отображают список всех категорий, связанных с постом. Однако некоторые пользователи могут захотеть отображать только родительскую категорию и исключить дочерние категории.

В этой статье мы покажем вам, как модифицировать цикл постов WordPress для отображения только родительской категории в одном посте.

Когда отображать только родительскую категорию в WordPress

Многие владельцы сайтов используют родительские и дочерние категории для создания структуры сайта.

Например, блог о путешествиях может иметь туристические направления, организованные по категориям, где каждый регион является родительской категорией, а города — дочерними категориями.

Отображение родительских и дочерних категорий

Аналогично, блог о еде может публиковать рецепты, организованные в родительской и дочерней категориях. Например, родительская категория может быть типом кухни, а дочерняя категория — типом блюда.

Сейчас большинство тем WordPress используют тег шаблона the_category() для вывода списка всех категорий, связанных с постом.

Эта функция эффективна, но она будет отображать все категории в алфавитном порядке и полностью игнорировать родительские/детские отношения.

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

Отображение только родительской категории в цикле постов WordPress

Для этого урока вам потребуется отредактировать файлы вашей темы WordPress. Если вы не делали этого раньше, то ознакомьтесь с нашей статьей о том, как копировать и вставлять фрагменты кода в WordPress.

Во-первых, вам нужно добавить следующий код в функции вашей темы.php файл или плагин для конкретного сайта.

function wpb_get_parent_terms($taxonomy = 'category') < $currentPost = get_post(); $terms = get_the_terms($currentPost->ID, $taxonomy); if (is_wp_error($terms)) < /** @var WP_Error $terms */ throw new Exception($terms->get_error_message()); > $map = array_map( function ($term) use ($taxonomy) < return 'term_id, $taxonomy)) . '" title="' . esc_attr($term->название) . '"> ' . $term->name . ' '; >, array_filter($terms, function ($term)) < return $term->parent == 0; >) ); return implode(', ', $map); >

Этот код просто создает новую функцию wpb_get_parent_terms() . По умолчанию эта функция будет отображать только родительские категории.

Далее, вам нужно поместить эту функцию в файлы вашей темы WordPress, где вы хотите отображать только родительскую категорию.

Чтобы понять, в какой файл шаблона следует заглянуть, смотрите нашу шпаргалку по иерархии шаблонов WordPress для начинающих.

По сути, вы будете искать тег шаблона the_category() ; внутри цикла WordPress. После того, как вы его нашли, вам нужно заменить его на следующий код:

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

Отображается только родительская категория

Этот код будет работать и для всех других таксономий. Например, категории продуктов WooCommerce или любые пользовательские таксономии, которые у вас могут быть.

Просто измените код следующим образом:

Этот код будет отображать категории товаров для магазина WooCommerce и будет отображать только родительские или отдельные категории для товара.

Отображается только родительская категория товара

Если вы хотите отобразить пользовательскую таксономию, то замените product_cat на название вашей пользовательской таксономии.

Надеемся, что эта статья помогла вам узнать, как отображать только родительскую категорию для ваших постов WordPress. Вы также можете ознакомиться с другими хаками и советами по созданию категорий WordPress или посмотреть наше руководство по созданию пользовательских страниц WordPress без написания кода.

Источник: www.wpbeginner.com

Оцените статью
Добавить комментарий