Вопрос или проблема
У меня есть несколько продуктов с атрибутом Цвет. Как я могу сделать что-то подобное:
http://example.com/shop/category-name/product-title-цвет/
Что мне нужно сделать, чтобы создать такой постоянный адрес в WooCommerce.
Вы можете сделать это, чтобы добавить QUERY к постоянным ссылкам (не к базовому URL):
add_filter( 'post_type_link', 'my_append_query_string', 10, 4 );
function my_append_query_string( $permalink, $post, $leavename, $sample ) {
if ( $post->post_type == 'shop' ) {
if (get_option('permalink_structure')){
$permalink = AddStringToUrl($permalink,'color=red');
}
}
return $permalink;
}
function AddStringToUrl($current_url, $string) {
return $current_url
. ( stripos($current_url, '?') === false ? '?' : '&' )
. $string;
}
.
Ответ или решение
Чтобы добавить атрибут товара к постоянной ссылке в WooCommerce, необходимо использовать фильтр post_type_link
. Это позволит вам модифицировать URL до того, как он будет отображен на вашем сайте. Ниже представлено пошаговое руководство, как это сделать.
Шаг 1: Подготовка кода
Вам нужно будет добавить следующий код в файл functions.php
вашей темы или в специальный файл для пользовательских функций, если он у вас есть. Этот код изменяет структуру постоянной ссылки, чтобы при отображении товара добавлялся атрибут, например, цвет.
add_filter( 'post_type_link', 'my_append_product_attribute', 10, 4 );
function my_append_product_attribute( $permalink, $post, $leavename, $sample ) {
// Проверяем, что это товар
if ( $post->post_type == 'product' ) {
// Получаем значение атрибута "Цвет"
$product = wc_get_product( $post->ID );
$color = $product->get_attribute( 'color' ); // Получаем цвет продукта
if ( get_option('permalink_structure') && $color ) {
// Удаляем пробелы и заменяем их на дефисы
$color_slug = sanitize_title( $color );
// Добавляем цвет к URL
$permalink .= '-' . $color_slug;
}
}
return $permalink;
}
Шаг 2: Пояснения к коду
-
Фильтр
post_type_link
: Этот фильтр позволяет изменить структуру ссылки на товарные страницы перед их выводом. -
Проверка типа поста: Убедитесь, что код применяется только к товарам, проверяя переменную
$post->post_type
. -
Получение атрибута "Цвет": С помощью функции
wc_get_product
загружается объект продукта, из которого мы извлекаем атрибут ‘color’. -
Создание слаг: Содержимое атрибута очищается от специальных символов и пробелов с помощью функции
sanitize_title
. -
Формирование новой ссылки: Если атрибут ‘Цвет’ существует, он добавляется к ссылке в конце, после дефиса.
Шаг 3: Проверка
После добавления кода не забудьте протестировать постоянные ссылки, чтобы убедиться, что они формируются корректно. Пойдите на страницу товара и проверьте, как выглядит его URL. Например, для товара с цветом «Красный» ссылка должна выглядеть так:
http://example.com/shop/category-name/product-title-red
Заключение
Теперь ваша структура ссылок в WooCommerce будет содержать атрибут цвета, что хорошо скажется на SEO и удобстве навигации. Рекомендуется также проанализировать влияние измененных ссылок на поведение пользователей и индексирование страниц поисковыми системами. Следите за тем, чтобы все ссылки были работоспособными, что поможет оптимизировать ваш интернет-магазин в поисковых системах и улучшить пользовательский опыт.