Добавьте атрибут продукта в постоянную ссылку в WooCommerce

Вопрос или проблема

У меня есть несколько продуктов с атрибутом Цвет. Как я могу сделать что-то подобное:

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: Пояснения к коду

  1. Фильтр post_type_link: Этот фильтр позволяет изменить структуру ссылки на товарные страницы перед их выводом.

  2. Проверка типа поста: Убедитесь, что код применяется только к товарам, проверяя переменную $post->post_type.

  3. Получение атрибута "Цвет": С помощью функции wc_get_product загружается объект продукта, из которого мы извлекаем атрибут ‘color’.

  4. Создание слаг: Содержимое атрибута очищается от специальных символов и пробелов с помощью функции sanitize_title.

  5. Формирование новой ссылки: Если атрибут ‘Цвет’ существует, он добавляется к ссылке в конце, после дефиса.

Шаг 3: Проверка

После добавления кода не забудьте протестировать постоянные ссылки, чтобы убедиться, что они формируются корректно. Пойдите на страницу товара и проверьте, как выглядит его URL. Например, для товара с цветом «Красный» ссылка должна выглядеть так:

http://example.com/shop/category-name/product-title-red

Заключение

Теперь ваша структура ссылок в WooCommerce будет содержать атрибут цвета, что хорошо скажется на SEO и удобстве навигации. Рекомендуется также проанализировать влияние измененных ссылок на поведение пользователей и индексирование страниц поисковыми системами. Следите за тем, чтобы все ссылки были работоспособными, что поможет оптимизировать ваш интернет-магазин в поисковых системах и улучшить пользовательский опыт.

Оцените материал
Добавить комментарий

Капча загружается...