Как присвоить уникальное значение тега H1 через произвольные поля для единичного товара, мы разобрали в прошлом уроке. Здесь же будет рассматриваться способ массового заполнения заголовков для неограниченного количества товаров в рамках одной категории.
Опять же, мы имеем установленную систему WordPress с активированным плагином WooCommerce, пару товарных категорий и несколько добавленных позиций. Структура интернет-магазина следующая:
- Смартфоны родительская категория
- Xiaomi дочерняя категория
- Redmi 4X название товара
- Mi 5C название товара
- Xiaomi дочерняя категория
- Аксессуары родительская категория
- Черный чехол для Xiaomi название товара
- Зарядное устройство для Xiaomi название товара
Уже можем предположить, что URL-адрес приобретет такой вид:
- site.ru/category/smartfony/xiaomi/redmi-4x/
- site.ru/category/aksessuary/chernyy-chehol-dlya-xiaomi/
Мы будем редактировать один из файлов шаблона, отвечающий за вывод заголовка страницы. Найдите этот участок кода, у меня он выглядит примерно так:
if ( $show_title ) {
$output .= ( $title != '' ) ? '<h1' . $schema_heading . '>' . $title . '</h1>' : '';
}
В данном случае проверяется возможность вывода блока, наличие значения в названии страницы и присвоение его переменной.
Сразу же зададим этому коду условие на вывод тега H1, чтобы больше не отвлекаться на него, обработку которого мы рассмотрим чуть позже:
if ( $h1 ) {
$output .= '<h1' . $schema_heading . '>' . $h1 . '</h1>';
}
elseif ( $show_title ) {
$output .= ( $title != '' ) ? '<h1' . $schema_heading . '>' . $title . '</h1>' : '';
}
До вывода H1 мы должны получить данные о категориях, свойствах и названиях товаров, и обработать в соответствии с нашей задачей. Вставьте код:
if ( is_product() ) {
global $post;
$args = array('taxonomy' => 'product_cat',);
$terms = wp_get_post_terms($post->ID, 'product_cat', $args);
// запись в переменную $woo_category название категории
$count = count($terms);
if ($count > 0) {
foreach ($terms as $term) {
$woo_category = $term->name;
}
}
// запись в переменную $woo_subcategory название дочерней категории, если она есть
$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 название товара
$woo_product = get_the_title($product_id);
// запись в переменную $woo_vendors свойства из атрибута, если оно есть (может быть любое), в данном случае мы указали цвет
$woo_cveta = get_the_terms($product->id, 'pa_cvet');
foreach ($woo_cveta as $value ) {
$woo_cvet = $value->name;
}
// присвоение уникального заголовка для каждого товара в рамках одной категории
if ($woo_category == "Смартфоны" AND $woo_subcategory == "Xiaomi") $h1_product = ('Смартфон '.$woo_subcategory.' '.$woo_product.' ('.$woo_cvet.') по низкой цене');
elseif ($woo_category == "Аксессуары") $h1 = ('Купить '.$woo_product.' недорого в Москве');
}
Таким же образом мы можем массово заполнить другие данные о товарах, как, например, title, description и keywords. Об этом читайте в этой статье.
2,922 total views, 4 views today




