Как использовать 2 шаблона для товара в Woocommerce?

Ссылка скопирована
1 ответ

Мне надо чтобы для каждого товара были 2 URL
Например сейчас: /product/windows-11
и я хочу дополнительный url /download/windows-11
и чтобы по такому url использовался другой шаблон
Мне это надо для теста, чтобы был работоспособный старый вариант и новый который будет на тесте

Дополнительно:

А что ты тестировать собрался?

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Дмитрий К. Ответ

Для двух URL одного товара в WooCommerce не нужно создавать второй товар. Нормальная схема: оставить основной URL /product/windows-11/, а для тестового вида добавить отдельный rewrite endpoint или rewrite rule, который будет открывать тот же товар, но подключать другой шаблон.

Пример идеи через rewrite rule:

add_action('init', function () {
    add_rewrite_rule(
        '^download/([^/]+)/?$',
        'index.php?post_type=product&name=$matches[1]&download_view=1',
        'top'
    );
});
 
add_filter('query_vars', function ($vars) {
    $vars[] = 'download_view';
    return $vars;
});
 
add_filter('template_include', function ($template) {
    if (get_query_var('download_view') && is_singular('product')) {
        $custom = get_stylesheet_directory() . '/woocommerce/single-product-download.php';
        if (file_exists($custom)) {
            return $custom;
        }
    }
 
    return $template;
});

add_action('init', function () { add_rewrite_rule( '^download/([^/]+)/?$', 'index.php?post_type=product&name=$matches[1]&download_view=1', 'top' ); }); add_filter('query_vars', function ($vars) { $vars[] = 'download_view'; return $vars; }); add_filter('template_include', function ($template) { if (get_query_var('download_view') && is_singular('product')) { $custom = get_stylesheet_directory() . '/woocommerce/single-product-download.php'; if (file_exists($custom)) { return $custom; } } return $template; });

После добавления правила нужно один раз пересохранить постоянные ссылки в админке. На продакшене лучше не делать это молча кодом на каждом запросе.

Для тестирования нового шаблона ещё проще использовать GET-параметр или закрытую тестовую страницу, например /product/windows-11/?view=download. Если второй URL должен индексироваться, нужно отдельно продумать canonical, чтобы не получить дубль карточки товара.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно