Существует ли шаблонный файл для списка всех терминов заданной пользовательской таксономии?

Вопрос или проблема

Предположим, мы зарегистрировали пользовательские таксономии composers и interprets.

Таксономия composers может иметь следующие термины:

  • Вольфганг Амадей Моцарт
  • Людвиг ван Бетховен
  • Рихард Вагнер

Таксономия interprets может иметь следующие термины:

  • Гленн Гулд
  • Даниэль Баренбойм
  • Венская государственная опера

Мне интересно, есть ли в иерархии шаблонов WordPress специальный файл, такой как taxonomy-terms.php, для вывода терминов таксономии с помощью простого цикла:

<?php
while ( have_posts() ) : the_post();
    the_title();
endwhile;
?>

Это выведет (предполагая настройку постоянных ссылок /%postname%/):

  • Вольфганг Амадей Моцарт, Людвиг ван Бетховен, Рихард Вагнер при просмотре example.com/composers
  • Гленн Гулд, Даниэль Баренбойм, Венская государственная опера при просмотре example.com/interprets

Если нет, мне хотелось бы узнать лучший способ реализации этого. Я бы создал шаблон страницы для каждой таксономии, template-composers-terms.php и template-interprets-terms.php, и вывел термины, используя что-то вроде следующего кода:

<?php
/* Имя шаблона: Список композиторов */ // или 'Список интерпретаторов'
$terms = get_terms( 'composers' ); // или get_terms( 'interprets' )
foreach ( $terms as $term ) :
    echo $term->name;
endforeach;
?>

Затем я создаю две страницы, “Композиторы” и “Интерпретаторы”, которым я соответственно назначаю шаблоны “Список композиторов” и “Список интерпретаторов”.

Мне не очень удобно использовать этот метод, потому что это требует создания нового файла для каждой таксономии.

Вы можете включить один и тот же файл в template-composers-terms.php и template-interprets-terms.php следующим образом:

<?php
/* Имя шаблона: Список композиторов */

$tax = "composer";
require "include/file_which_does_all_the_work.php";

И если слаг страницы совпадает со слагом таксономии, вы можете сохранить строку $tax = ..., добавив это в включаемый файл:

$tax = $GLOBALS["wp_query"]->query["pagename"];

В коде есть ошибка, я думаю…
так как get_terms поддерживает массивы в качестве параметров.
Поэтому лучший способ сделать это, я думаю, следующий:
1- создайте ваш шаблон template-composers-terms.php
2- Включите их на странице, используя:

<?php get_template_part('template','composers-terms') ?>

И, наконец, в вашем вновь созданном файле вставьте:

<?php
/* Имя шаблона: Список композиторов или 'Список интерпретаторов' */
$terms = get_terms(array(
         'taxonomy' => 'composers', // убедитесь, что это ключ таксономии, переданный в функцию register_taxonomy.
         'hide_empty' => false
 ));
foreach ( $terms as $term ) :
    echo $term->name;
endforeach;
?>

Ответ или решение

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

Предложенное Решение

  1. Создание Пользовательских Шаблонов

    Вы можете создать шаблоны для каждой из таксономий, такие как template-composers-terms.php и template-interprets-terms.php. В каждом из этих шаблонов вы сможете использовать функцию get_terms() для получения и вывода терминов. Вот как это может выглядеть:

    <?php
    /* Template Name: Список композиторов */
    
    $terms = get_terms(array(
       'taxonomy' => 'composers', // Убедитесь, что это ключ таксономии, зарегистрированной в register_taxonomy
       'hide_empty' => false, // Опционально, нужно для отображения пустых терминов
    ));
    
    foreach ($terms as $term) {
       echo $term->name . '<br>'; // Выводим название термина с переносом строки
    }
    ?>
  2. Использование Общего Файла

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

    <?php
    /* Template Name: Список композиторов */
    
    $tax = 'composers'; // Задаем нужную таксономию
    require "includes/list-terms.php"; // Подключаем общий файл
    ?>

    В файле list-terms.php код может выглядеть следующим образом:

    <?php
    $terms = get_terms(array(
       'taxonomy' => $tax,
       'hide_empty' => false,
    ));
    
    foreach ($terms as $term) {
       echo $term->name . '<br>';
    }
    ?>
  3. Динамически Определяемая Таксономия

    Если имена страниц совпадают с именами таксономий, вы также можете автоматизировать процесс получения имени таксономии:

    <?php
    $tax = $GLOBALS['wp_query']->query['pagename'];
    require "includes/list-terms.php";
    ?>

Оптимизация и SEO

Для улучшения SEO-эффективности:

  • Содержимое страницы: Используйте четкие заголовки и описания для каждой страницы с выводом терминов.
  • Ключевые слова: Включите ключевые слова, относящиеся к композиторам и интерпретам, в текст и теги заголовков.
  • Структурированный контент: Выводите термины в виде списков или карточек, чтобы улучшить структуру страницы и облегчить индексацию.

Заключение

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

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

Капча загружается...