Как по клику на товар в архиве WooCommerce выводить кастомную страницу?

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

Приветствую коллектив. Сейчас есть такое решение sitewebit.com/product/shablon-veb-saytu-clean-chystka/. Использую просто вукоммерс . По клику в архиве переход на страницу товара. В вкладке описание товара вывожу iframe шаблона. Хочу чтоб по клику на товар в архиве был переход на кастомную страницу где будет выведен только содержимое вкладки "описание" и страницу планирую дополнить кнопками с формой заказа. Думаю нужен хук вывода "описания" ( какой не знаю) и создать страницу товара кастомную полностью. Подскажите решение плиз.

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

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

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

Заказать помощь
Лучший ответ
1
Ирина WP Ответ

В WooCommerce описание товара — это обычный контент товара, то есть post_content. Если по клику из архива нужно вести не на стандартную карточку товара, а на свою страницу-превью с iframe, кнопками и формой, есть два нормальных варианта.

Первый вариант: оставить URL товара тем же, но переопределить шаблон single-product.php или отдельные хуки WooCommerce в дочерней теме. Это лучше для SEO и логики магазина: товар остаётся товаром, корзина, хлебные крошки и микроразметка не ломаются.

Например можно убрать стандартные блоки и вывести только описание:

remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_title', 5);
remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_price', 10);
remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_excerpt', 20);
remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30);
 
add_action('woocommerce_single_product_summary', function () {
    global $post;
 
    echo '<div class="template-preview">';
    echo apply_filters('the_content', $post->post_content);
    echo '</div>';
 
    echo do_shortcode('[contact-form-7 id="123" title="Заказ шаблона"]');
}, 20);

remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_title', 5); remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_price', 10); remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_excerpt', 20); remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30); add_action('woocommerce_single_product_summary', function () { global $post; echo '<div class="template-preview">'; echo apply_filters('the_content', $post->post_content); echo '</div>'; echo do_shortcode('[contact-form-7 id="123" title="Заказ шаблона"]'); }, 20);

Второй вариант: создать отдельный page template и передавать ID товара в URL, например /preview/?product_id=123. Тогда ссылку в архиве можно заменить через фильтр:

add_filter('woocommerce_loop_product_link', function ($url, $product) {
    return add_query_arg('product_id', $product->get_id(), site_url('/preview/'));
}, 10, 2);

add_filter('woocommerce_loop_product_link', function ($url, $product) { return add_query_arg('product_id', $product->get_id(), site_url('/preview/')); }, 10, 2);

Но если это именно товар WooCommerce, я бы начинал с кастомизации страницы товара, а не с отдельной страницы. Так меньше риска сломать корзину, аналитику, canonical и стандартные WooCommerce-хуки.

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

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

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

комментарий

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

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