Как по клику на товар в архиве WooCommerce выводить кастомную страницу?
Приветствую коллектив. Сейчас есть такое решение sitewebit.com/product/shablon-veb-saytu-clean-chystka/. Использую просто вукоммерс . По клику в архиве переход на страницу товара. В вкладке описание товара вывожу iframe шаблона. Хочу чтоб по клику на товар в архиве был переход на кастомную страницу где будет выведен только содержимое вкладки "описание" и страницу планирую дополнить кнопками с формой заказа. Думаю нужен хук вывода "описания" ( какой не знаю) и создать страницу товара кастомную полностью. Подскажите решение плиз.
Дополнительно:
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
В 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);
Второй вариант: создать отдельный 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);
Но если это именно товар WooCommerce, я бы начинал с кастомизации страницы товара, а не с отдельной страницы. Так меньше риска сломать корзину, аналитику, canonical и стандартные WooCommerce-хуки.