В случае, когда в вашем интернет-магазине, созданном с помощью плагина WooCommerce, добавлено большое количество, а заполненных мета-тегов на карточках товаров нет вообще или настолько мало, что мысль о ручном заполнении приводит в уныние. Заниматься рутинной работой мало кто хочет, поэтому мы рассмотрим, как автоматически добавить уникальные метаданные (title, description и keywords) по шаблону на все страницы товаров, потратив при этом минимальное количество времени.
Кроме того, следует помнить, что внутренняя оптимизация сайта является важной частью на пути к успеху.

Возьмем в пример интернет-магазин, занимающийся реализацией смартфонов и аксессуаров. Структура товарных категорий и добавленных продуктов в WooCoommerce выглядит следующим образом:
- Смартфоны родительская категория
- Xiaomi дочерняя категория
- Redmi 4X товар
- Mi 5C товар
- Meizu дочерняя категория
- M5s товар
- MX6 товар
- Xiaomi дочерняя категория
- Аксессуары родительская категория
- Черный чехол для Meizu товар
- Зарядное устройство для Xiaomi товар
Массовое заполнение мета-тегов (заголовков, описаний и ключевых слов) в товарах будет производиться без плагинов, только через файл вашего шаблона, отвечающего за “шапку” сайта. Как правило, файл носит говорящее само за себя название header.php, открываем его в редакторе. Между тегами <head> и </head> видим объявление и вывод заголовка:
<title><?php wp_title( '' ); ?></title>
До этой строчки добавим свой код:
<?php
if ( is_product() ) {
global $post;
$args = array('taxonomy' => 'product_cat',);
$terms = wp_get_post_terms($post->ID, 'product_cat', $args);
$count = count($terms);
if ($count > 0) {
foreach ($terms as $term) {
$woo_category = $term->name;
}
}
$categories = get_the_terms( get_the_ID(), 'product_cat' );
if ( $categories && ! is_wp_error( $category ) ) :
foreach($categories as $category) :
$children = get_categories( array ('taxonomy' => 'product_cat', 'parent' => $category->term_id ));
if ( count($children) == 0 ) {
$woo_subcategory = $category->name;
}
endforeach;
endif;
$woo_product = get_the_title($product_id);
$woo_types = get_the_terms($product->id, 'pa_skolko-pamyati');
foreach ($woo_types as $value ) {
$woo_gb = $value->name;
}
$woo_types = get_the_terms($product->id, 'pa_kto-proizvoditel');
foreach ($woo_types as $value ) {
$woo_vendor = $value->name;
}
function mb_lcfirst($woo_product) {
$fc = mb_strtolower(mb_substr($woo_product, 0, 1));
return $fc.mb_substr($woo_product, 1);
}
if ($woo_category == "Смартфоны" AND $woo_subcategory == "Xiaomi") {
$woo_title = ('Смартфон '.$woo_vendor.' '.$woo_product.' ('.$woo_gb.') купить в Москве');
$woo_description = ('Отличный мобильный телефон '.$woo_vendor.' '.$woo_product.' с объемом памяти '.$woo_gb.'по низкой цене. Доставка, гарантия.');
$woo_keywords = ('купить '.mb_strtolower($woo_vendor).' '.mb_strtolower($woo_product));
}
elseif ($woo_category == "Смартфоны" AND $woo_subcategory == "Meizu") {
$woo_title = (Купить смартфон '.$woo_vendor.' '.$woo_product.' '.$woo_gb.' недорого');
$woo_description = (Хороший смартфон '.$woo_vendor.' '.$woo_product.' по разумной цене в интернет-магазине. Доставка по России, гарантия.');
$woo_keywords = ('купить '.mb_strtolower($woo_vendor).' '.mb_strtolower($woo_product));
}
elseif ($woo_category == "Аксессуары") {
$woo_title = ($woo_product.' купить в Москве');
$woo_description = (mb_strtolower($woo_product).' недорого в интернет-магазине с доставкой. Гарантия.');
$woo_keywords = mb_strtolower($woo_product);
}
}
?>
Разберем строки:
- 2 – условие на то, что заключенный в него код будет обрабатываться только на странице продукта.
- 5-23 – получение информации о родительских и дочерних категориях.
- 25 – название товара.
- 27-34 – если вы используете вариативные товары, то несомненно полезной возможностью будет вывод атрибутов о конкретном продукте.
- 36-39 – функция, которая впоследствии может быть использована в шаблоне для изменения первого символа в переменной с прописного на строчный.
- 41-55 – непосредственно сами шаблоны. Не забывайте о допустимой длине мета-тегов.
Соответственно, код, рассмотренный выше, который отвечает за вывод заголовка, заменяем на нужные нам данные и добавляем вывод мета-тегов description и keywords:
<?php $title = wp_get_document_title(); ?>
<title><?php if ( $title != $woo_product ) echo $title; else echo $woo_title; ?></title>
<?php
if ( is_product() AND ($woo_description OR $woo_keywords) ) {
echo ('<meta name="description" content="'.$woo_description.'" />');
echo ('<meta name="keywords" content="'.$woo_keywords.'" />');
}
?>
Одна из основных особенностей скрипта заключается в том, что при ручном заполнении данных о товаре, будет выводиться ваш вариант, иначе, при недоступности информации, данные берутся из шаблона.
Если ваш шаблон автоматически создает заголовок из функции wp_head, то добавьте в functions.php следующий код, чтобы не дублировать теги:
remove_action( 'wp_head', '_wp_render_title_tag', 1 );
Кроме этого, для вас я постарался проанализировать и разобрать темы, касающиеся добавления тега H1 в количестве одного товара, так и массового заполнения в рамках одной категории. Данные способы помогут сэкономить время и оптимизировать страницы для поисковых систем.
5,861 total views, 5 views today





4 комментария. Оставить новый
Много ошибок в данном коде, я их исправил, но все равно не работает.
Добрый вечер. Исправил код.
Не проще установить Yoast SEO?
В случае, если товары однотипные, то может и проще, однако вы наверное не сможете в шаблоне вывести атрибуты. Опять же, в варианте, рассмотренном в статье, можно задать различные вариации для разных категорий.