Как получить теги и категории?

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

Я использовал следующий код, чтобы получить теги из поста, а затем просто вывести их:

$posttags = get_the_tags($post->ID);
if ($posttags) {
  foreach($posttags as $tag) { 
    echo $tag->name . ', ';}
}

Теперь мне также нужно получить категории. Моя первая идея заключалась в том, чтобы просто дублировать функцию, но разве нет способа создать одну единую функцию, которая будет извлекать и теги, и категории, а затем выводить их?

get_the_terms( $id, $taxonomy ); — это то, что вам нужно, я полагаю.

Вы можете передать массив в параметр $taxonomy. Так что этот фрагмент кода:

$posttags = get_the_terms($post->ID, array('category', 'post_tag'));

должен сделать именно то, что вы пытаетесь достичь.

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

Чтобы получить как теги, так и категории в WordPress, можно использовать функцию get_the_terms(), которая позволяет извлекать термины, относящиеся к заданному посту по указанной таксономии. Вам не нужно дублировать функции для каждой из таксономий — достаточно передать массив с названиями нужных таксономий. Вот как это можно сделать шаг за шагом:

Шаг 1: Получение тегов и категорий

Используйте следующую строку кода для получения как тегов, так и категорий:

$post_terms = get_the_terms($post->ID, array('category', 'post_tag'));

Шаг 2: Проверка полученных данных и вывод

Теперь необходимо проверить, были ли найденные термины, и затем их вывести. Вот как это можно реализовать:

$post_terms = get_the_terms($post->ID, array('category', 'post_tag'));

if ($post_terms && !is_wp_error($post_terms)) {
    foreach ($post_terms as $term) {
        echo $term->name . ', ';
    }
}

Разделение на категории и теги

Если нужно различать, что именно выводится — теги или категории — можно дополнить массив, чтобы игнорировать тип термина. Вот пример:

$post_tags = get_the_terms($post->ID, 'post_tag');
$post_categories = get_the_terms($post->ID, 'category');

if ($post_categories) {
    echo "Категории: ";
    foreach ($post_categories as $category) {
        echo $category->name . ', ';
    }
}

if ($post_tags) {
    echo "Теги: ";
    foreach ($post_tags as $tag) {
        echo $tag->name . ', ';
    }
}

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

Чтобы ваш код был оптимизирован для SEO, убедитесь, что каждое название категории и тега отображается в понятном и доступном формате. Например, вместо «Теги» можно использовать альтернативный текст, который будет более информативен.

Вот пример с SEO-оптимизированным заголовком:

if ($post_categories) {
    echo "<h2>Категории поста:</h2><ul>";
    foreach ($post_categories as $category) {
        echo "<li>" . esc_html($category->name) . "</li>";
    }
    echo "</ul>";
}

if ($post_tags) {
    echo "<h2>Теги поста:</h2><ul>";
    foreach ($post_tags as $tag) {
        echo "<li>" . esc_html($tag->name) . "</li>";
    }
    echo "</ul>";
}

Заключение

Таким образом, используя функцию get_the_terms(), вы можете легко и эффективно извлекать категории и теги из постов в WordPress. Важно также учитывать возможность SEO-оптимизации, что поможет улучшить видимость вашего сайта в поисковых системах. Следуя этим рекомендациям, вы создадите аккуратный и понятный вывод информации, что способствует лучшему восприятию пользователями.

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

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