Создание уникальных Title и Description для интернет-магазина на Woocommerce
Оглавление
- Создание уникального Title для категории товаров
- Создание уникального Description для категории товаров
- Создание уникального Title для страницы товара
- Создание уникального Description для страницы товара
Создание уникального Title для категории товаров Woocommerce
На сайте установлен плагин Woocommerce и Yoast SEO. Требуется создать Title по предложенному шаблону:
«Купить (название данного раздела с мал. буквы) от (min цена товара) руб. в Москве с доставкой»
Приведённые в статье фрагменты кода нужно разместить в файле functions.php вашей темы.
add_filter('wpseo_title', 'custom_woocommerce_category_title');
function custom_woocommerce_category_title($title) {
if (is_product_category()) {
global $wp_query;
$category = $wp_query->get_queried_object();
$category_name = mb_strtolower($category->name);
// Получаем минимальную цену товара в данной категории
$args = array(
'post_type' => 'product',
'posts_per_page' => 1,
'post_status' => 'publish',
'tax_query' => array(
array(
'taxonomy' => 'product_cat',
'field' => 'term_id',
'terms' => $category->term_id,
),
),
'meta_key' => '_price',
'orderby' => 'meta_value_num',
'order' => 'ASC',
);
$loop = new WP_Query($args);
if ($loop->have_posts()) {
while ($loop->have_posts()) : $loop->the_post();
$product = wc_get_product(get_the_ID());
$min_price = $product->get_price();
endwhile;
wp_reset_postdata();
} else {
$min_price = 'нет в наличии';
}
$title = "Купить {$category_name} от {$min_price} руб. в Казани и Татарстане с доставкой";
}
return $title;
}
Создание уникального Description для категории товаров Woocommerce
Исходный шаблон для Description категории товаров:
Купить (название данного раздела с мал.буквы) в Москве с доставкой в мебельном ТЦ. Цены на (название данного раздела с мал. буквы) от (min цена в разделе) руб., высокое качество и гарантия от производителя!
add_filter('wpseo_metadesc', 'custom_woocommerce_category_description');
function custom_woocommerce_category_description($description) {
if (is_product_category()) {
global $wp_query;
$category = $wp_query->get_queried_object();
$category_name = mb_strtolower($category->name);
// Получаем минимальную цену товара в данной категории
$args = array(
'post_type' => 'product',
'posts_per_page' => 1,
'post_status' => 'publish',
'tax_query' => array(
array(
'taxonomy' => 'product_cat',
'field' => 'term_id',
'terms' => $category->term_id,
),
),
'meta_key' => '_price',
'orderby' => 'meta_value_num',
'order' => 'ASC',
);
$loop = new WP_Query($args);
if ($loop->have_posts()) {
while ($loop->have_posts()) : $loop->the_post();
$product = wc_get_product(get_the_ID());
$min_price = $product->get_price();
endwhile;
wp_reset_postdata();
} else {
$min_price = 'нет в наличии';
}
$description = "Купить {$category_name} в Москве с доставкой в мебельном ТЦ. Цены на {$category_name} от {$min_price}) руб., высокое качество и гарантия от производителя!";
}
return $description;
}
Кроме тега Description, на страниwе есть ещё разметка Open Graph. Для её изменения делаем так же.
function custom_woocommerce_category_og_description($og_description) {
if (is_product_category()) {
global $wp_query;
$category = $wp_query->get_queried_object();
$category_name = mb_strtolower($category->name);
// Получаем минимальную цену товара в данной категории
$args = array(
'post_type' => 'product',
'posts_per_page' => 1,
'post_status' => 'publish',
'tax_query' => array(
array(
'taxonomy' => 'product_cat',
'field' => 'term_id',
'terms' => $category->term_id,
),
),
'meta_key' => '_price',
'orderby' => 'meta_value_num',
'order' => 'ASC',
);
$loop = new WP_Query($args);
if ($loop->have_posts()) {
while ($loop->have_posts()) : $loop->the_post();
$product = wc_get_product(get_the_ID());
$min_price = $product->get_price();
endwhile;
wp_reset_postdata();
} else {
$min_price = 'нет в наличии';
}
$og_description = "Купить {$category_name} в Москве с доставкой в мебельном ТЦ. Цены на {$category_name} от {$min_price}) руб., высокое качество и гарантия от производителя!";
}
return $og_description;
}
Создание уникального Title для страницы товара Woocommerce
Шаблон title для товаров:
(Название данного товара) – купить по цене (цена товара) руб. в Москве с доставкой
add_filter('wpseo_title', 'custom_woocommerce_product_title', 15);
function custom_woocommerce_product_title($title) {
if (is_product()) {
global $post;
// Убедитесь, что объект поста доступен
if ($post) {
$product = wc_get_product($post->ID);
$product_name = $product->get_name();
$product_price = $product->get_price();
$title = "{$product_name} – купить по цене {$product_price} руб. в Москве с доставкой";
}
}
return $title;
}
Создание уникального Description для страницы товара Woocommerce
Шаблон для Description страницы товаров содержит значение атрибутов: длина, ширина, высота.
(Название товара) (размеры товара ШхГхД) — купить по цене (цена товара) руб. Стоимость на (название данного раздела с мал. буквы) от (min цена в разделе) руб. в мебельном ТЦ. Высокое качество и гарантия от производителя.
add_filter('wpseo_metadesc', 'custom_woocommerce_product_description', 10, 1);
function custom_woocommerce_product_description($description) {
if (is_product()) {
global $post;
if ($post) {
$product = wc_get_product($post->ID);
$product_name = $product->get_name();
$product_price = $product->get_price();
// Получаем атрибуты товара
$height = $product->get_attribute('pa_vysota');
$length = $product->get_attribute('pa_dlina');
$width = $product->get_attribute('pa_shirina');
// Формируем строку размеров
$dimensions = array_filter([$width, $height, $length]);
$dimensions_string = implode('x', $dimensions);
// Получаем категорию товара
$categories = get_the_terms($post->ID, 'product_cat');
if ($categories && !is_wp_error($categories)) {
$category = $categories[0];
$category_name = mb_strtolower($category->name);
// Получаем минимальную цену товара в данной категории
$args = array(
'post_type' => 'product',
'posts_per_page' => 1,
'post_status' => 'publish',
'tax_query' => array(
array(
'taxonomy' => 'product_cat',
'field' => 'term_id',
'terms' => $category->term_id,
),
),
'meta_key' => '_price',
'orderby' => 'meta_value_num',
'order' => 'ASC',
);
$loop = new WP_Query($args);
if ($loop->have_posts()) {
while ($loop->have_posts()) : $loop->the_post();
$cat_product = wc_get_product(get_the_ID());
$min_price = $cat_product->get_price();
endwhile;
wp_reset_postdata();
} else {
$min_price = 'нет в наличии';
}
} else {
$category_name = '';
$min_price = 'нет в наличии';
}
$description = "{$product_name} ({$dimensions_string}) - купить по цене {$product_price} руб. Стоимость на {$category_name} от {$min_price} руб. в мебельном ТЦ. Высокое качество и гарантия от производителя.";
}
}
return $description;
}

