В случае, когда в вашем интернет-магазине, созданном с помощью плагина 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 в количестве одного товара, так и массового заполнения в рамках одной категории. Данные способы помогут сэкономить время и оптимизировать страницы для поисковых систем.
3,589 total views, 7 views today
4 комментария. Оставить новый
Много ошибок в данном коде, я их исправил, но все равно не работает.
Добрый вечер. Исправил код.
Не проще установить Yoast SEO?
В случае, если товары однотипные, то может и проще, однако вы наверное не сможете в шаблоне вывести атрибуты. Опять же, в варианте, рассмотренном в статье, можно задать различные вариации для разных категорий.