Расширить функционал шорткода WooCommerce
У WooCommerce есть готовые шорткоды. При использовании данного шорткода [products limit="6" columns="3"] выводится миниатюра, заголовок, цена и кнопка "В корзину".
Подскажите, как можно добавить атрибут, например: content="true", чтобы шорткод выводил краткое описание товара?
В итоге получаем [products limit="6" columns="3" content="true"]
Ответы (1 шт):
Непосредственно в шорткоде нет опций по выводу контента. Шорткод в данном случае просто запрос на вывод товаров по определенным условиям.
Подробная документация по шорткоду [products] https://docs.woocommerce.com/document/woocommerce-shortcodes/
Для управления выводом используйте хуки страницы магазина-архива-категории
https://www.businessbloomer.com/woocommerce-visual-hook-guide-archiveshopcat-page/
Например, для вывода описания под заголовком можно переопределить хук вывода заголовка
remove_action( 'woocommerce_shop_loop_item_title','woocommerce_template_loop_product_title', 10 );
function custom_woocommerce_template_loop_product_title() {
global $product;
?>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
<div itemprop="description">
<?php echo apply_filters( 'woocommerce_short_description', $product->post->post_excerpt ) ?>
</div>
<?php
}
add_action( 'woocommerce_shop_loop_item_title', 'custom_woocommerce_template_loop_product_title', 10);
Пример для эффекта только на шорткод
<?php remove_action( 'woocommerce_shop_loop_item_title','woocommerce_template_loop_product_title', 10 ); ?>
<?php add_action( 'woocommerce_shop_loop_item_title', 'custom_woocommerce_template_loop_product_title', 10); ?>
<?php do_shortcode('[products limit="6" columns="3"]'); ?>
<?php remove_action( 'woocommerce_shop_loop_item_title', 'custom_woocommerce_template_loop_product_title', 10); ?>
<?php add_action( 'woocommerce_shop_loop_item_title','woocommerce_template_loop_product_title', 10 ); ?>
<?php
function custom_woocommerce_template_loop_product_title() {
global $product;
?>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
<div itemprop="description">
<?php echo apply_filters( 'woocommerce_short_description', $product->post->post_excerpt ) ?>
</div>
<?php
}
?>