Сышышь ты, выходи сюда,
поговорим !

Главная Новости

Добавляем теги и категории для страниц в Wordpress (плагины и хаки)

Опубликовано: 23.08.2018

видео Добавляем теги и категории для страниц в Wordpress (плагины и хаки)

Вывод названия и описания рубрик на WordPress - Константин Хмелев

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



Если подумать, то решение разработчиков CMS вполне логичное — данная фишка естественным образом смотрится только в записях блогов, а в остальных случаях, вроде как, и не требуется. Однако по работе возникают разные ситуации, в том числе и необходимость указывать теги и категории для страниц WordPress. Они могут пригодиться:


Рубрики и теги в WordPress

при создания каталога статей (разбиения по рубрикам); как еще один способ навигации; чтобы скрыть статьи из выбранной категории; при реализации  похожих страниц  (выступают в качестве критериев схожести нескольких объектов); для краткой «характеристики» определенного контента (за счет меток).

Плагины для задания категорий и тегов страницам

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


Как правильно заполнять мета теги "title", "description" и "keywords"?

Разделы: <?php the_category ( ', ' ) ; ?> . Теги: <?php the_tags ( '' , ', ' , '.' ) ; ?>

Разделы: <?php the_category(', '); ?>. Теги: <?php the_tags('', ', ', '.'); ?>

В большинстве случаев код вставляется в page.php (или другой подходящий файл).

Post Tags and Categories for Pages

С этим модулем я знаком уже давно. Он обновлялся 10 месяцев назад и пропустил несколько последних знаковых релизов, тем не менее, при тестировании все было отлично. Не удивительно, что Post Tags and Categories for Pages имеет более 30тысяч скачиваний и почти максимальную оценку.

Процесс установки прост — находите плагин по названию среди других и активируете, настроек никаких нет. Сразу после этого в меню админки для раздела страниц появится 2 новых дополнительных пункта. Работать с ними можно точно также, как с записями.

На скриншоте видите, что расширение совместимо и с некоторыми другими, например, с  Simple Tags . Также я успешно тестировал вывод тегов страниц в WordPress через the_tags в шаблоне и аналогичную фишку для категорий — the_category.

Единственный возможный минус — в своих «личных записях» нашел пометку о том, что данное решение глючит с исключениями (не могу вспомнить, что это значит): то ли речь идет о параметре exclude в WP функциях, то ли о плагинах похожих постов и  Exclude categories … Как выход из ситуации, предлагается добавить метки, а после отключить модуль. Вдруг, информация кому-то пригодится.

Tag Pages

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

По функциям:

появление специального блока ввода меток в WP при редактировании; с помощью фильтра pre_get_posts все ваши публикации будут корректно выводиться в архивах, RSS фидах ; совместим с мультисайтовой установкой; не делает никакие правки в БД, только использует хуки.

Add Category to Pages

У модуля меньше всего загрузок — 10тысяч, но при этом максимальная оценка. Не смотря на название, он позволяет работать не только с категориями страниц WordPress но и тегами. Вы сможете просматривать архивы со списками публикаций по определенной теме. Единственное, что смущает — последний апдейт был 3 года назад. Хотя, по сути, применяемые здесь WP функции, за это время не изменились.

Хаки добавления тегов / категорий в страницы

В сети имеется несколько нужных нам сниппетов, в которых суть плюс-минус одинаковая, поэтому я выберу лишь один найден здесь (самый детальный). Хак следует разместить в файле function.php вручную либо используйте  плагин Code Snippets . Весь код состоит из двух частей.

Сначала реализуем отображение блоков меток и категорий для страниц WordPress внутри админки:

function new_taxonomies_for_pages ( ) { register_taxonomy_for_object_type ( 'post_tag' , 'page' ) ; register_taxonomy_for_object_type ( 'category' , 'page' ) ; } add_action ( 'init' , 'new_taxonomies_for_pages' ) ;

function new_taxonomies_for_pages() { register_taxonomy_for_object_type( 'post_tag', 'page' ); register_taxonomy_for_object_type( 'category', 'page' ); } add_action( 'init', 'new_taxonomies_for_pages' );

Если вам надо активировать какую-то одну сущность — удалите лишнюю строчку, оставив только вариант с post_tag или category.

Вторая часть сниппета:

if ( ! is_admin ( ) ) { add_action ( 'pre_get_posts' , 'tag_cat_archives' ) ; } function tag_cat_archives ( $wp_query ) { $my_taxonomies_array = array ( 'post' , 'page' ) ; if ( $wp_query -> get ( 'category_name' ) || $wp_query -> get ( 'cat' ) ) $wp_query -> set ( 'post_type' , $my_taxonomies_array ) ; if ( $wp_query -> get ( 'tag' ) ) $wp_query -> set ( 'post_type' , $my_taxonomies_array ) ; }

if ( ! is_admin() ) { add_action( 'pre_get_posts', 'tag_cat_archives' ); } function tag_cat_archives( $wp_query ) { $my_taxonomies_array = array('post','page'); if ( $wp_query->get( 'category_name' ) || $wp_query->get( 'cat' ) ) $wp_query->set( 'post_type', $my_taxonomies_array ); if ( $wp_query->get( 'tag' ) ) $wp_query->set( 'post_type', $my_taxonomies_array ); }

Данный код нужен дабы система WordPress смогла выводить архивные списки рубрик/меток. Вы модифицируете запрос Wp_Query + используете хук pre_get_posts. При этом действия происходят только во фронтенде, т.к. мы указали условие !is_admin().

Еще в одном случае мне встречалась конструкция, где вместо задания сущностей ‘post‘,’page‘ для Wp_Query был параметр ‘any‘ (любые):

if ( $wp_query -> get ( 'tag' ) ) $wp_query -> set ( 'post_type' , 'any' ) ;

if ($wp_query->get('tag')) $wp_query->set('post_type', 'any');

Прием подойдет, когда у вас на сайте имеются и другие форматы объектов, которые хотелось бы выводить в архивах.

В целом, как видите, внедрить категории и теги в страницы Wordpress сайте не так и сложно. Выбирайте один из двух вариантов реализации: плагины проще, а хаки занимают меньше места. Если есть что дополнить по статье, пишите ниже.

rss