Как присвоить уникальное значение тега 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. Об этом читайте в этой статье.
1,182 total views, 2 views today