Вы хотите отображать только родительскую категорию для ваших постов 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