Как с помощью шорткода вывести товар woocommerce?
Добрый день! Есть шотркод woocommerce для вывода товара
[product_page id="94"]
Вопрос можно ли тут задать параметры чтобы выводились только фото товара, описание и кнопка?
Или нужно отдельный шаблон товара делать, либо в шаблоне по условию, если это страница товара то показываем все. Если не страница товара показываем только то, что в зеленом прямоугольнике
Дополнительно
Ответы:
Попробуйте не вырезая код просто отключить отображение display:none; V0VA @V0VA На сегодняшний день, такой возможности нет.
Можно решить вопрос правкой шаблона content-single-product.php
(предварительно скопировав его в /папка шаблона / woocommerce/ )
добавив условие на проверку url если нужная страница, то не нужные блоки не отображаются
<?php $url = $_SERVER['REQUEST_URI']; $url = explode('?', $url); $url = $url[0]; if($url !== "/"){...} // условие показа/скрытия ?> |
<?php $url = $_SERVER['REQUEST_URI']; $url = explode('?', $url); $url = $url[0]; if($url !== "/"){...} // условие показа/скрытия ?>
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос

У шорткода WooCommerce product_page нет параметров, которые позволяют штатно оставить только фото, описание и кнопку. Этот шорткод выводит почти тот же шаблон, что и одиночная страница товара, поэтому он подтягивает галерею, цену, вкладки, мета-блоки, связанные товары и другие элементы через хуки WooCommerce. Скрывать лишнее через display:none можно только как временный визуальный костыль: разметка все равно загрузится, часть скриптов останется, а при обновлении темы или WooCommerce легко получить побочные эффекты.
Более безопасный путь - сделать отдельный короткий shortcode под нужный компактный вывод. Тогда обычная карточка товара и одиночная страница товара останутся без изменений, а на нужной странице вы получите только заданные блоки.
add_shortcode('compact_product', function ($atts) { if (! function_exists('wc_get_product')) { return ''; } $atts = shortcode_atts([ 'id' => 0, ], $atts, 'compact_product'); $product_id = absint($atts['id']); $product = wc_get_product($product_id); if (! $product || ! $product->is_visible()) { return ''; } $description = $product->get_short_description(); if ($description === '') { $description = $product->get_description(); } $html = '<div class="compact-product">'; $html .= '<a class="compact-product__image" href="' . esc_url(get_permalink($product_id)) . '">'; $html .= $product->get_image('woocommerce_single'); $html .= '</a>'; $html .= '<div class="compact-product__description">' . wpautop(wp_kses_post($description)) . '</div>'; $html .= '<a class="button compact-product__button" href="' . esc_url($product->add_to_cart_url()) . '">' . esc_html($product->add_to_cart_text()) . '</a>'; $html .= '</div>'; return $html; });
Использование на странице:
[compact_product id='94']
Такой вариант не требует править content-single-product.php и не ломает стандартный шаблон товара. Он получает товар по ID, проверяет, что товар существует и видим в каталоге, выводит изображение WooCommerce нужного размера, берет краткое описание, а если оно пустое - обычное описание. Кнопка строится через методы товара, поэтому для простого товара она будет вести на добавление в корзину, а для вариативного товара обычно приведет пользователя к выбору вариации.
Правка шаблона одиночного товара нужна только тогда, когда вы действительно меняете саму страницу товара. Для вывода одного товара внутри произвольной страницы отдельный shortcode обычно чище: меньше условий по URL, меньше зависимости от структуры темы и проще откатить изменение.