Вопрос или проблема
Я использовал следующий код, чтобы получить теги из поста, а затем просто вывести их:
$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-оптимизации, что поможет улучшить видимость вашего сайта в поисковых системах. Следуя этим рекомендациям, вы создадите аккуратный и понятный вывод информации, что способствует лучшему восприятию пользователями.