Для чего это вообще нужно?
Как вы уже наверняка знаете, мета-теги нужны для SEO-продвижения, и если вы пишите свою тему на WordPress или дорабатываете какую-то чужую, то у вас есть два варианта добавить теги. Либо плагином, либо самому подключить поля для мета-тегов на нужные страницы.
Чаще всего я вижу на клиентских сайтах плагины Yast SEO и All in One SEO Pack. На мой взгляд, они добавляют ненужный функционал, часть которого я и так добавляю вставкой заготовленного кода в functions.php
. Тем более я хочу также влиять на последний узел в хлебных крошках.
Приведу пример:
Согласитесь, смотрелось бы не очень красиво, если бы я подргужал в хлебные крошки заголовок, как это делают большинство плагинов.
Поэтому я предпочитаю самостоятельно добавить поля для мета-тегов через Advanced Custom Fields. Установка описана здесь - (Установка Advanced Custom Fields).
Для этого нужно:
В админке на вкладке "Группы полей" добавьте следующие поля.
На скриншоте пример моих полей. Достаточно при создании указать Ярлык, Имя, Тип.
И выбрать Условия отображения:
"Категории" находятся в "Формы -> Таксономия"
В итоге поля должны появиться в админке в том числе на страницах Категорий и Товаров.
В Title я использую следующую логику. Сначала для данной страницы проверяется, существует ли тайтл из поля категории. Если его нет, то происходит поиск поля со страницы/записи, если его нет, то подставляется Заголовок страницы.
В шаблон это нужно вставить в файл header.php
перед тегом title:
$queried_object = get_queried_object();
$taxonomy = $queried_object->taxonomy;
$term_id = $queried_object->term_id;
Внутрь тега title:
if( get_field( 'wc_title', $taxonomy . '_' . $term_id ) ) {
the_field( 'wc_title', $taxonomy . '_' . $term_id );
} elseif ( get_field('wc_title') ) {
the_field( 'wc_title' );
} else {
wp_title( '',true );
}
Для description и keywords такая же логика, только мы не подгружаем туда заголовок. Вообще keywords можно не делать, так как он в ранжировании поисковиками не участвует, но это другая история.
if( get_field( 'wc_description', $taxonomy . '_' . $term_id ) ) {
the_field( 'wc_description', $taxonomy . '_' . $term_id );
} else {
the_field( 'wc_description' );
}
Keywords:
if( get_field( 'wc_keywords', $taxonomy . '_' . $term_id ) ) {
the_field( 'wc_keywords', $taxonomy . '_' . $term_id);
} else {
the_field( 'wc_keywords' );
}