Изменение Title и Description SEO-плагинов WordPress

изменение Title и Description средствами php

В некоторых редких случаях в WordPress нужно автоматически менять (или добавлять что-то) в Title и Description. Например менять год в заголовке статьи. Так она будет всегда актуальной. Допустим "Как установить плагины в Wordpress [год]" И вместо [год] будет подставляться 2016, 2017 и т.д. Вставлять значения пользовательских полей.

Так как большинство веб-мастеров используют два плагина All in One Seo и Yoast, то рассмотрим на их примере.

к содержанию ↑

Изменение заголовков и описаний с помощью пользовательских полей (Custom fields) в Yoast Seo

Тут на самом деле всё просто. Разработчики предусмотрели возможность вставлять шаблоны метаописаний.

Например их можно задать в шаблоне плагина (version - имя пользовательского поля):

пользовательские поля в Yoast SEO

Полный список шаблонов на официальном сайте плагина:

https://kb.yoast.com/kb/yoast-wordpress-seo-titles-metas-template-variables/

к содержанию ↑

Изменение заголовков и описаний в All in One Seo средствами PHP и

Custom fields

По-умолчанию в данном плагине это сделать не так-то просто. Никаких встроенных инструментов плагин не даёт. Придётся применять php-сниппеты.

Используем исходную информацию по плагину http://4coder.info/en/blog/2011/all-in-one-seo-pack-customization/

Начнём с простого. Допишем в конец тайтла всех записей какое-то слово (например World!):

add_filter('aioseop_title_page','my_custom_title');
global $post;
function my_custom_title($text) {
$mytext = 'World!'; //задаём свой текст
$text .= $mytext; //"склеиваем" исходный Title и свой текст
return $text; //выводим текст
}

 (данный сниппет нужно добавлять в файл Function.php).

Тоже самое делаем для Description:

add_filter('aioseop_description','my_custom_description');
 global $post;
 function my_custom_description($text) {
 $mytext = 'World!'; //задаём свой текст
 $text .= $mytext; //"склеиваем" исходный Description и свой текст
 return $text; //выводим текст
 }

Теперь допишем в конец описания значение какого-нибудь пользовательского поля (custom fields). Если это сайт про онлайн-игры, то в пользовательское поле можно вписать номер версии игры и просто меняя номер версии при редактировании записи, менять её везде - в заголовке, описании, тексте поста и т.д.

Допустим Title  "Скачайте игру Покемоны версия <тут подставляем версию>"

И Description "На нашем сайте вы всегда можете скачать Покемоны <тут подставляем версию>"

Пример для описания:

add_filter('aioseop_description','my_custom_description');
global $post;
function my_custom_description($text) {
$mycustomseo = get_post_meta($post->ID, 'my_custom_field', true);//получаем значение пользовательского поля my_custom_field
$text .= $mycustomseo; //"склеиваем" исходный Description и пользовательское поле
 return $text; //выводим текст
}
к содержанию ↑

Изменение сеозаголовков и описаний All in One Seo + Woocommers

Прежде всего почему мы используем связку All in One Seo + Woocommers? Потому что он уже был установлен на сайте. Хотя в Yoast проблема добавления пользовательских полей в описание решается намного проще и выше описана.

Так как в Woocommers не записи, а товары, то в сниппете нужно использовать не $post, а $product.

add_filter('aioseop_description','my_custom_description');
global $product;
function my_custom_description($text) {
$mycustomseo = get_the_terms($product->ID, 'pa_my_custom_field');//получаем значение пользовательского поля my_custom_field
$text .= $mycustomseo; //"склеиваем" исходный Description и пользовательское поле
 return $text; //выводим текст
}

Конкретный пример. Был сайт по продаже контрольных работ. В каждой контрольной были разные варианты и покупатель мог выбрать какой именно вариант контрольной он хочет купить. Естественно это был один товар и его Title выглядел примерно так:

"Контрольная по математике для 1 курса варианты 01, 03, 12"

Товаров таких было много, варианты постоянно добавлялись и было необходимо оперативно менять эти варианты сразу в тексте-описании, заголовке и сео-описании. Так как значения вариантов хранились в пользовательском поле 'variant' был составлен сниппет переписывающий заголовок:

add_filter('single_post_title','my_custom_product_title');
global $product;
function my_custom_product_title($text) {
$versionvalues = get_the_terms( $product->id, 'pa_variant');
if (!empty($versionvalues))
{
$mycustomseo = ' Вариант ';
$end_element = array_pop($versionvalues);//изымаем последний элемент, присваиваем его значение переменной
foreach ( $versionvalues as $versionvalue)
{
$mycustomseo .= $versionvalue->name; $mycustomseo .= $versionvalue->value;// делаем что-либо с первыми...
$mycustomseo .= ', ';
}

$mycustomseo .= $end_element->name; $mycustomseo .= $end_element->value; // делаем что-либо с последним элементом...

}

$text .= $mycustomseo;
return $text;
}

Здесь мы записываем исходный title в переменную $text, получаем массив значений всех вариантов $versionvalues, потом изымаем из него последний элемент $end_element (после него не нужна запятая) и в цикле foreach склеиваем это всё в одну строку, проставляя пробелы и запятые.

Оставьте ответ

Ваш Email не будет опубликован. Обязательные поля отмечены*