Выводим title по шаблону для определенных рубрик сайта на WordPress + Yoast SEO
В этом посте речь пойдет не о настройке всем известного и, на мой взгляд, очень удобного для работы оптимизатора плагина Yoast SEO. Его функционал зарекомендовал себя для многих блогов на основе движка WordPress. Многообразия функционала этого плагина хватает для многих блогов, но существуют задачи которые ему не под силу.
к содержанию ↑1. Задача
Итак, на повестке дня задача – вывести title для товаров магазина на основе Woocommerce определенной категории по шаблону. Погуглив, тривиального решения найти не удалось, поэтому займемся написанием своего плагина под эти цели. Сразу скажу, что интерфейса взаимодействия с этим плагином в этой статье не будет. По необходимости, его написанием займемся позже.
Имеем сайт на WordPress, плагин интернет магазина Woocommerce и плагин Yoast SEO.
к содержанию ↑2. Код плагина
Первым делом создаем файл с расширением php и таким содержанием:
/*
* Plugin Name: Переопределение мета-тегов
* Description: Тайтлы по шаблону для категории.
* Version: 1.0
* Author: Александр Моргунов
* Author URI: upperseo.ru
* License: GPLv2 or later
*/
// добавляем title для луковичных
function custom_title( $title ) { //определяем функцию
global $post; //берем глобальную переменную post
$categories = get_the_terms( $post->ID, ‘product_cat’ ); // Получаем элементы таксономии product_cat(категории) которые относятся к текущему посту
$max_cat = count($categories); // считаем число элементов массива, их может быть больше одного т.к. каждый товар можно отнести к различным категориям.
for ($i = 0; $i < $max_cat; $i++)
{
$cats_id[$i] = $categories[$i]->term_id; // получаем id каждой категории
}
if (in_array(79, $cats_id) and is_single( $post )) // если текущий пост принадлежит категории с id = 79, Id категории смотрим в адресной строке через админку выбрав эту категорию для редактирования. И мы находимся на странице поста(товара).
{
$title = get_the_title().’ — луковицы | Самара’; // присваиваем переменной $title заголовок поста + произвольный текст, так же можно использовать другие различные поля товара или поста.
return $title; //возвращаем наш новый тайтл
}
else return $title; // иначе оставляем тайтл таким каким его сделал Yoast SEO.
}
add_filter( ‘wpseo_title’, ‘custom_title’); // прикрепляем нашу функцию к фильтру ‘wpseo_title’
?>
Если управление title происходит самим движком то вместо add_filter( ‘wpseo_title’, ‘custom_title’); напишем add_filter( ‘wp_title’, ‘custom_title’); , плагин будет работать и без Yoast SEO.
к содержанию ↑3. Установка плагина
Теперь придумаем название для плагина — я назвал его metа-rewrite. Файл php сохраняем под именем meta-rewrite.php и кладем в папку с названием meta-rewrite. Архивируем папку zip-архиватором, из админки устанавливаем новый плагин и подсовываем ей нами созданный архив, активируем и поверяем результат.
Как видим, нет ничего сложного в создании плагина и переопределении мета-тегов. Таким же образом можно назначить description и прочие мета-теги.
Этот код так же будет работать, если поместить его в файл functions.php темы вашего сайта.
В этой статье я рассматриваю создание плагина как пример одной из его функций. Поэтому если Вам необходимо доработать лишь эту функцию, то создавать отдельный плагин нет смысла.
В компании Upper SEO вы всегда можете заказать доработку и настройку вашего сайта.
18 сентября, 2018 в 21:55
Хорошая статья ,все просто и доступно
26 декабря, 2019 в 19:10
Не подскажете, а как сделать для нескольких рубрик, а не только для id=79 рубрики ? Я так понимаю править надо эту строку
if (in_array(79, $cats_id) and is_single( $post ))
28 декабря, 2019 в 21:37
Владимир, верно!