Бывают ситуации, когда верстая страничку, необходимо в произвольном месте вывести шорткодом цену вариации или описание товара. В стандартном функционале WooCommerce таких шорткодов не предусмотрено, но есть решение!
Вывод шорткодом цены вариативного товара в WooCommerce
Чтобы вывести цену вариативного товара в WooCommerce шорткодом в нужном нам месте, необходимо добавить в файл function.php вашей темы следующий код:
function custom_price_shortcode_callback( $atts ) { $atts = shortcode_atts( array( 'id' => null, ), $atts, 'cena_tovara' ); $html = ''; if( intval( $atts['id'] ) > 0 && function_exists( 'wc_get_product' ) ){ // Get an instance of the WC_Product object $product = wc_get_product( intval( $atts['id'] ) ); // Get the product prices $price = wc_get_price_to_display( $product, array( 'price' => $product->get_price() ) ); // Get the active price // Formatting html output if( ! empty( $price ) ) $html = wc_price( $price ); } return $html; } add_shortcode( 'cena_tovara', 'custom_price_shortcode_callback' );
Теперь на любой странице вы можете вывести цену вариации товара следующим шорткодом:
[cena_tovara id="123"]
Цифры «123» — это id вариации, его можно узнать в карточке товара слева от названия вариации.
Вывод шорткодом описания товара в WooCommerce
Чтобы вывести шорткодом в нужном нам месте описание товара, добавленного в WooCommerce, необходимо добавить в файл function.php вашей темы следующий код:
function custom_product_description($atts){ global $product; try { if( is_a($product, 'WC_Product') ) { return wc_format_content( $product->get_description("shortcode") ); } return "Product description shortcode run outside of product context"; } catch (Exception $e) { return "Product description shortcode encountered an exception"; } } add_shortcode( 'custom_product_description', 'custom_product_description' );
Шорткод для вывода описания товара будет следующий:
[custom_product_description id="123"]
Цифры «123» — это id товара.
Описанная выше функция вывода шорткодом описания товара будет работать с правильным разбиением на абзацы. Если необходимо вывести неформатированный текст, то используйте следующий код в function.php
function display_product_description( $atts ){ $atts = shortcode_atts( array( 'id' => get_the_id(), ), $atts, 'opisanie_tovara' ); global $product; if ( ! is_a( $product, 'WC_Product') ) $product = wc_get_product($atts['id']); return $product->get_description(); } add_shortcode( 'opisanie_tovara', 'display_product_description' );
а шорткод такой:
[opisanie_tovara id="123"]
Вывод кнопки добавления в корзину нужной нам вариации:
Эту ссылку можно поставить как на кнопку так и на любую фразу в тексте.
/cart/?add-to-cart=123
«123» — id нужной вариации товара. При нажатии на такую ссылку, откроется страница корзины сайта с добавленным товаром нужной нам вариации.
4 Комментариев
Кстати, все сторонние коды я рекомендую вставлять не на прямую в файл темы, а через специальный плагин «My custom Functions».
Спасибо за совет!
А как добавить кнопку, по нажатию на которую не будет открываться корзина, а например, оставаться на текущей странице?
Для этого в ссылке уберите /cart/
Должно быть только
?add-to-cart=123