- get_the_category — функция для вывода категорий (рубрик) к указанному посту
- Использование
- Параметры
- Возвращает массив объектов WP_Term
- Примеры
- Выводим список рубрик со ссылками
- Выводим список рубрик к текущему посту через запятую
- Указываем ссылку только на первую рубрику, в которой находится пост
- Как вывести посты по рубрикам на отдельной странице в WordPress
- Создание шаблона страницы
- Задача 1. Вывести рубрики или отдельную рубрику на странице в WordPress.
- Задача 2. Как вывести записи из рубрик на страницу в WordPress.
- Используем плагины
- Вывод категорий для поста через функцию get_the_category
- Функция get_the_category
- Вывод категорий кастомных записей
get_the_category — функция для вывода категорий (рубрик) к указанному посту
Функция возвращает массив объектов (в данном случае рубрики, в которых находится пост с указанным в параметрах ID).
Короче говоря в итоге вы получаете все рубрики поста и информацию о них.
Использование
Параметры
$post_id
(целое) ID поста, если функция используется в цикле, этот параметр необязателен.
Возвращает массив объектов WP_Term
Как я уже говорил, функция возвращает массив объектов WP_Term , каждый из них содержит информацию об одной из рубрик, в которой находится пост.
В скобках указаны эквивалентные варианты.
- term_ID (cat_ID) — ID рубрики,
- name (cat_name) — название рубрики,
- slug (category_nicename) — ярлык категории,
- description (category_description) — описание категории,
- parent (category_parent) — ID родительской категории,
- count (category_count) — количество записей (постов) в рубрике,
- term_group — значение колонки term_group в базе данных,
- term_taxonomy_id — ID таксономии, у рубрик он равен 1,
- taxonomy — название таксономии, для рубрик — category,
- object_id — ID объекта;
Примеры
Выводим список рубрик со ссылками
Переменной $post_id задайте своё значение, либо просто удалите её оттуда, если используете этот код внутри цикла.
Для получения URL рубрики используем функцию get_category_link().
Выводим список рубрик к текущему посту через запятую
Функция trim() нужна для удаления каких-либо символов по краям строки, в данном случае запятую с пробелом.
Указываем ссылку только на первую рубрику, в которой находится пост
К каждому объекту массива $categories можно обратиться по порядковому номеру, нумерация начинается с нуля.
Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.
Если вам нужна помощь с сайтом или разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда будем рады вам помочь!
Источник
Как вывести посты по рубрикам на отдельной странице в WordPress
Продолжаем рассматривать вопросы кастомизации рубрик. В этой статье мы научимся работать не только с выводом данных самих категорий, но и записей которые к ним привязаны.
Суть задачи – это вывести названия рубрик или отдельной рубрики на странице WordPress. Возникает вполне логичный вопрос для чего это нужно, ведь есть шаблон категории? Все правильно, но с точки зрения seo оптимизации шаблон категории не очень подходит для продвижения рубрик, его можно допилить с помощью произвольных полей, но можно использовать альтернативный подход – это вывод записей категории на странице WordPress.
Чем рубрика отличается от страницы? В первую очередь – это наличие возможности задать seo теги, такие как title и description даже при подключении бесплатных версий seo плагинов. Во-вторых – это возможность добавить описание с форматированием текста, привязать картинку. Все это также можно сделать на странице категории, но в данной статье мы рассмотрим пример использования шаблона страниц для этих целей.
Создание шаблона страницы
Для начала вам нужно создать шаблон страницы, который мы будем использовать для вывода наших рубрик.
Для этого нужно зайти в папку с вашей темой по адресу: wp-content/themes/your_theme/. Для этого можно воспользоваться либо ftp клиентом, либо же панелью хостинга. Если вы новичок лучше перед началом работ сделайте бэкап сайта.
1. В корневой папке темы создаем файл, например category-page.php.
2. В ней же находим файл page.php и копируем его содержимое в файл category-page.php. Я использую дефолтную тему twentynineteen, и буду показывать на ее примере, вам же нужно учитывать html разметку вашего шаблона и копировать ваш код из файла page.php, внося изменения которые я покажу ниже.
3. Делаем из файла category-page.php шаблон страницы с помощью следующего кода.
4. Сохраняем. Идем в админку сайта в раздел «Страницы» — «Добавить новую». Указываем заголовок страницы, и справа в блоках настройки выбираем вкладку «Атрибуты страницы». В ней из выпадающего списка с названием «Шаблон», выбираем название шаблона которое мы задавали выше.
5. Сохраняем. Теперь можно работать с шаблоном и задавать код для вывода нужной нам информации на этой странице.
Задача 1. Вывести рубрики или отдельную рубрику на странице в WordPress.
Для этих целей мы будем использовать функцию get_categories(). Дополнительно мы зададим аргументы для этой функции. Вы в свою очередь можете более детально ознакомиться с этой функцией в этой статье.
Здесь указан код для работы со всеми категориями, присутствующими на сайте. Если вы хотите ограничить этот параметр и вывести одну рубрику, то в поле ‘include’ приведенного выше кода задайте id рубрики. Узнать его можно перейдя в админке в раздел «Записи» — «Рубрики», справа нажимаем на нужную рубрику и переходим на страницу ее редактирования. Сверху, в строке браузера вы сможете увидеть ее id.
Переходим в файл category-page.php и редактируем его содержимое следующим образом.
Как видно, вверху файла добавлен вызов функции get_categories() с аргументами, а ниже цикл перебора категорий подходящих под заданные нами параметры.
У вас должен получиться примерно такой результат.
Задача 2. Как вывести записи из рубрик на страницу в WordPress.
Для решения этой задачи будет использоваться класс WP_Query<>. Для вывода постов рубрики также задаем список аргументов, которые укажут параметры выборки. Опять открываем наш файл category-page.php и добавляем в него код для вывода записей.
Теперь нужно задать какую информацию о посте нужно выводить, обычно это ссылка с названием поста. Финальный код для вывода записей по рубрикам.
Вот результат работы данного кода.
Чтобы вывести записи из определенной категории достаточно указать значение id для категории в аргументах к функции get_categories().
Аналогично данный код можно использовать для вывода категорий с постами и на главной странице сайта на WordPress. Только редактировать нужно будет файл index.php, который находиться в корневой папке вашей темы.
Используем плагины
Если вы не хотите создавать шаблоны и работать с кодом, тогда вы можете поставить один из многих плагинов с репозитория WordPress, которые помогут вам реализовать приведенный выше функционал. Есть целый ряд готовых решений, которые отличаются дизайном, количеством настроек и немного функционалом, например: List category posts, The Post Grid, Post Grid, WP Show Posts.
Для примера я покажу, как можно использовать плагин WP Show Posts.
1. Идем в админку, меню «Плагины» — «Добавить новый». Ищем в строке поиска название плагина «WP Show Posts». Устанавливаем и активируем его.
2. Слева в меню у вас появиться пункт «WP Show Posts». Переходим в него.
3. Сверху нажимаем «Add new».
4. На первой вкладке настроек можно выбрать: тип записи, таксономию (например, после выбора категории появиться список созданных вами категорий), количество постов и чекбокс для включения пагинации.
5. Вторая вкладка это выбор разметки, где можно задать количество колонок и отступы между ними.
6. Далее идут настройки изображений, и вывода контента записи, где вы можете задать длину краткого описания и тег для ссылки заголовка поста.
7. Вкладка meta. Позволяет указать выводить ли автора, дату, категорию и количество комментариев к каждому посту.
8. More settings включают в себя настройки по сортировке данных для вывода.
Задаем заголовок, указываем настройки и жмем справа опубликовать. Копируем шорткод справа в блоке «Usage».
После этого переходим в раздел «Страницы» — «Добавить новую». Указываем ее название, а в редакторе Gutenberg выбираем блок Шорткод, куда вставляем скопированный ранее код. Сохраняете и проверяете результат работы.
На этом сегодня все. Я постарался показать, как сделать страницу рубрикой WordPress плагином или же без плагинов с помощью кода. Надеюсь, материал был для вас полезен.
Источник
Вывод категорий для поста через функцию get_the_category
Приветствую всех читателей блога WordPress Inside в 2011 году, поздравляю с наступившими и наступающими праздниками, желаю много здоровья, счастья и радости на следующие 360 дней. Как и обещал в своей статье про планы на будущий 2011 год занимаюсь по чуть-чуть улучшением всех своих основных блогов — обновляю системы, ставлю последние версии плагинов и копаюсь в шаблонах ради оптимизации и исправления ошибок. Работал это крайне сложная, я бы даже сказал очень кропотливая — находишь одну неточность, решаешься ее исправить и перед тобой 5 отдельных проектов, для каждого из которых нужно внести правки. Ну, раз я уже запланировал все это сделать, назад дороги нет, заодно в процессе получаю дополнительный опыт создания блогов на wordpress и уже нашел штук 5-6 тем для новых постов в блог:) Сегодня поговорим о категориях и функциях для их отображения.
В одной из прошлых статей блога я публиковал хак который помогает убрать ненужный текст из атрибута title для ссылок категорий. Данное решение использовалось для функции вывода списка категорий в сайдбаре с помощью функции wp_list_categories. На выходе вы получали записи вроде этой:
Если уж для seo атрибут title имеет хоть какое-то значение, то куда полезнее там было бы разместить просто название категории, а не весь этот ненужных текст. Собственно, указанная выше ссылка на хак помогала решить эту проблему. Но вот ни задача, все это было справедливо (работало) для функции списка категорий wp_list_categories, которая позволяла предварительно обработать полученный список не выводя его сразу же. Но что делать с другими функциями для вывода категорий? — вот в чем вопрос.
Например, я сегодня совершенно случайно обнаружил, что куча ненужного текста в атрибут title ссылки пишется и при отображении списка категорий для конкретного поста.
Вся проблема заключалась в том, что здесь используется функция the_category, для которой, к сожалению, нельзя задать параметр, чтобы результат ее вызова не отображался сразу. Зато в вордпресс есть еще одна функция get_the_category, которая возвращается массив объектов категорий для конкретного поста.
Функция get_the_category
Синтаксис функции get_the_category достаточно прост:
где параметр id это учетная запись поста для которого будут выводить категории. Куда более интересными есть примеры использования функции.
Отображение первой категории для поста
Программисты знают, что нулевой параметр массива выводит первый элемент, собственно это и объясняет принцип работы данного кода.
Как получить категории вне цикла Loop
Для этого в качестве параметра функции нужно передавать id поста, что и происходит в коде.
Вывод названия категории без ссылок
Кстати, данную функцию я использую в некоторых сайтах, чтобы выводить название категории поста, но без активной ссылки — так просто дополнительный полезный текст на странице. В таком случае можно применить код:
Убираем из title категории лишний текст
Ну, и напоследок, немного поразмыслив получился хак для вывода списка категории для поста без использования функции the_category, которую мы успешно заменяем на get_the_category. Если вы хотите добавить код непосредственно в то место шаблона, где выводятся категории, например, файл archive.php, то пишем что-то вроде:
Можно, в принципе разместить код для отображения категорий в файле функций, а потом в файлах шаблона поменять the_category на новую функцию, например, под названием my_thecat(). Конечно, не забудьте предварительно перед заменой добавить соответствующий код в файл функций functions.php:
Потестировал, все работает. Остается лишь один вопрос — насколько это все полезно и крайне необходимо. Если у вас один блог с постоянным дизайном, который вы хотите сделать самым лучшим, то можно потратить пару минут и внести соответствующие изменения. В случае если у вас таких блогов много, думаю, особой seo выгоды манипуляция с title не принесет в плане, проще купить ссылок в Rotapost на все эти проекты — кстати эксперимент по подъему тИЦ в системе успешно и позитивно завершен, скоро будет отчет об этом.
Вывод категорий кастомных записей
В комментариях подсказывают, что примеры, указанные выше, не работают для кастомных (пользовательских) типов записей. Я с этой задачей не сталкивался, поэтому могу вам лишь посоветовать погуглить решение в англоязычных блогах по ключу wordpress custom post type show category или же воспользоваться подсказкой пользователя Stinker (из комментариев). В месте вывода категорий нужно просто вставить код:
ID, ‘categoria_video’, ‘
Категория: ‘, ‘ ‘,’ ‘ ); ?>
Где categoria_video — это таксономия пользовательской записи (она же кастомная). А теперь более подробно от куда и что. Например у нас есть:
// Тип записи Видео if ( ! function_exists( ‘video_cp’ ) ) < function video_cp() < $labels = array( 'name' =>_x( ‘Видео’, ‘Post Type General Name’, ‘video’ ), ‘singular_name’ => _x( ‘Видео’, ‘Post Type Singular Name’, ‘video’ ), ‘menu_name’ => __( ‘Видео’, ‘video’ ), ‘parent_item_colon’ => __( ‘Родительский:’, ‘video’ ), ‘all_items’ => __( ‘Все видеоматериалы’, ‘video’ ), ‘view_item’ => __( ‘Просмотреть’, ‘video’ ), ‘add_new_item’ => __( ‘Добавить новое видео’, ‘video’ ), ‘add_new’ => __( ‘Добавить видео’, ‘video’ ), ‘edit_item’ => __( ‘Редактировать видео’, ‘video’ ), ‘update_item’ => __( ‘Обновить видео’, ‘video’ ), ‘search_items’ => __( ‘Найти видео’, ‘video’ ), ‘not_found’ => __( ‘Не найдено’, ‘video’ ), ‘not_found_in_trash’ => __( ‘Не найдено в корзине’, ‘video’ ), ); $args = array( ‘labels’ => $labels, ‘supports’ => array( ‘title’, ‘editor’, ‘excerpt’, ), ‘taxonomies’ => array( ‘categoria_video’ ), // категория, которую мы создадим ниже (она же таксономия) ‘public’ => true, ‘menu_position’ => 5, ‘menu_icon’ => ‘dashicons-id-alt’, ); register_post_type( ‘video’, $args ); > add_action( ‘init’, ‘video_cp’, 0 ); // инициализируем > if ( ! function_exists( ‘categoria_video’ ) ) < // Категории для вакансий function categoria_video() < $labels = array( 'name' =>_x( ‘Категории Видео’, ‘Taxonomy General Name’, ‘categoria_video’ ), ‘singular_name’ => _x( ‘Категория Видео’, ‘Taxonomy Singular Name’, ‘categoria_video’ ), ‘menu_name’ => __( ‘Категории’, ‘categoria_video’ ), ‘all_items’ => __( ‘Категории’, ‘categoria_video’ ), ‘parent_item’ => __( ‘Родительская категория Видео’, ‘categoria_video’ ), ‘parent_item_colon’ => __( ‘Родительская категория Видео:’, ‘categoria_video’ ), ‘new_item_name’ => __( ‘Новая категория’, ‘categoria_video’ ), ‘add_new_item’ => __( ‘Добавить новую категорию’, ‘categoria_video’ ), ‘edit_item’ => __( ‘Редактировать категорию’, ‘categoria_video’ ), ‘update_item’ => __( ‘Обновить категорию’, ‘categoria_video’ ), ‘search_items’ => __( ‘Найти’, ‘categoria_video’ ), ‘add_or_remove_items’ => __( ‘Добавить или удалить категорию’, ‘categoria_video’ ), ‘choose_from_most_used’ => __( ‘Поиск среди популярных’, ‘categoria_video’ ), ‘not_found’ => __( ‘Не найдено’, ‘categoria_video’ ), ); $args = array( ‘labels’ => $labels, ‘hierarchical’ => true, ‘public’ => true, ); register_taxonomy( ‘categoria_video’, array( ‘video’ ), $args ); > add_action( ‘init’, ‘categoria_video’, 0 ); // инициализируем >
Спасибо пользователю Stinker за подсказку, возможно, вам она пригодится.
Источник