В интернет-магазинах на WooCommerce часто возникает необходимость создавать уникальные, понятные и SEO-дружественные URL для товаров. Это помогает улучшить индексирование в поисковых системах, повышает удобство пользователей и облегчает работу с товарами в админке. В этой статье мы подробно разберём, как создать уникальные URL для товаров в WooCommerce с помощью кода и плагинов, а также приведём практические примеры.
Почему важны уникальные URL для товаров в WooCommerce
По умолчанию WooCommerce формирует URL товаров на основе названия товара, что может привести к дублированию, если названия повторяются. Появляются проблемы с SEO и навигацией. Уникальный URL помогает:
- Избежать конфликтов и ошибок 404;
- Улучшить SEO-позиции за счёт ключевых слов в URL;
- Сделать ссылки более понятными и читаемыми для пользователей;
- Автоматизировать процесс создания URL, особенно при большом количестве товаров.
Создание уникальных URL с помощью фильтра WooCommerce
Для изменения структуры URL товаров можно использовать фильтр post_type_link, который позволяет переписать ссылку до её вывода. Рассмотрим пример функции yelly_custom_woocommerce_product_permalink, которая добавляет в URL уникальный артикул товара.
function yelly_custom_woocommerce_product_permalink( $permalink, $post ) {
if ( $post->post_type !== 'product' ) {
return $permalink;
}
$sku = get_post_meta( $post->ID, '_sku', true );
if ( ! empty( $sku ) ) {
$permalink = home_url( '/product/' . $sku . '/' );
}
return $permalink;
}
add_filter( 'post_type_link', 'yelly_custom_woocommerce_product_permalink', 10, 2 );
В этом примере вместо стандартного URL типа site.ru/product/nazvanie-tovara будет использоваться site.ru/product/sku-tovara. Это гарантирует уникальность, если артикул уникален.
Как добавить поддержку новых URL в правила перезаписи
Чтобы новые URL корректно работали, нужно добавить правило перезаписи URL и обновить правила маршрутизации:
function yelly_add_rewrite_rules() {
add_rewrite_rule(
'^product/([^/]+)/?$',
'index.php?product=$matches[1]',
'top'
);
}
add_action( 'init', 'yelly_add_rewrite_rules' );
function yelly_flush_rewrite_rules() {
yelly_add_rewrite_rules();
flush_rewrite_rules();
}
// Вызвать один раз при активации темы или плагина
// yelly_flush_rewrite_rules();
ВАЖНО: flush_rewrite_rules() вызывайте только один раз, например, при активации плагина, чтобы избежать нагрузки.
Использование плагина Clearfy Pro для управления URL
Если вы не хотите писать код, можно использовать плагин Clearfy Pro, который позволяет гибко настраивать ЧПУ для товаров, категорий и тегов WooCommerce. В Clearfy Pro есть функции:
- Автоматическая генерация SEO-дружественных URL;
- Удаление базовых слов из URL (например, product);
- Управление дублированным контентом;
- Настройка переадресаций и canonical URL.
Плагин значительно упрощает работу с URL и подходит для больших магазинов.
Автоматическое добавление уникальных параметров в URL для вариативных товаров
Для вариативных товаров часто возникает задача создавать уникальные ссылки для каждой вариации. По умолчанию WooCommerce добавляет параметры GET, например ?attribute_pa_color=red. Можно сделать более читабельные URL с помощью плагина или кода.
Пример кода для формирования ЧПУ с вариациями:
function yelly_custom_variation_permalink( $url, $variation ) {
if ( 'product_variation' !== $variation->post_type ) {
return $url;
}
$parent_id = $variation->post_parent;
$parent = get_post( $parent_id );
$attributes = wc_get_product_variation_attributes( $variation->ID );
$slug_parts = [];
foreach ( $attributes as $key => $value ) {
$slug_parts[] = sanitize_title( $value );
}
$url = home_url( '/product/' . $parent->post_name . '/' . implode( '-', $slug_parts ) . '/' );
return $url;
}
add_filter( 'woocommerce_product_variation_get_permalink', 'yelly_custom_variation_permalink', 10, 2 );
Этот код создаёт URL в виде site.ru/product/nazvanie-tovara/cvet-razmer/ вместо параметров GET. При этом нужно доработать правила перезаписи, что сложнее, но возможно.
Проверка уникальности URL и избежание конфликтов
При создании уникальных URL важно отслеживать дублирования. Если URL уже существует, лучше автоматически подставлять суффиксы или менять структуру. В коде это можно контролировать через функцию проверки наличия поста с таким слагом:
function yelly_generate_unique_slug( $slug, $post_type = 'product' ) {
$original_slug = $slug;
$i = 1;
while ( post_exists( '', '', '', $post_type ) ) {
$slug = $original_slug . '-' . $i;
$i++;
}
return $slug;
}
Используйте эту функцию при генерации URL, чтобы гарантировать уникальность.
Итоги и рекомендации
Уникальные URL для товаров WooCommerce – важный инструмент SEO и удобства пользователей. Используйте фильтры WordPress для кастомизации ссылок, применяйте правила перезаписи, учитывайте вариативные товары и контролируйте уникальность. Для упрощения процессов можно использовать Clearfy Pro или другие надежные плагины.