Есть неприятная ситуация в Woocommerce с вариативными товарами. Цены выводит от и до, как на странице товара, так и в рубрике. Предлагаю вам глобальное решение, как сделать одну цену для вариативных товаров на всем сайте Woocommerce
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
/** * -- Вывод минимальной цены для вариаций в магазине (глобальное решение). */ function bbloomer_variation_price_format( $price, $product ) { if (is_product()) { return $product->get_price(); } else { // Main Price $prices = array( $product->get_variation_price( 'min', true ), $product->get_variation_price( 'max', true ) ); $price = $prices[0] !== $prices[1] ? sprintf( __( '%1$s', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] ); // Sale Price $prices = array( $product->get_variation_regular_price( 'min', true ), $product->get_variation_regular_price( 'max', true ) ); sort( $prices ); $saleprice = $prices[0] !== $prices[1] ? sprintf( __( '%1$s', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] ); if ( $price !== $saleprice ) { $price = '<del>' . $saleprice . '</del> <ins>' . $price . '</ins>'; } return $price; } } if ( ! is_admin() ) { add_filter( 'woocommerce_variable_sale_price_html', 'bbloomer_variation_price_format', 10, 2 ); add_filter( 'woocommerce_variable_price_html', 'bbloomer_variation_price_format', 10, 2 ); } // show variation price add_filter('woocommerce_show_variation_price', function() {return true;}); //override woocommerce function function woocommerce_template_single_price() { global $product; if ( ! $product->is_type('variable') ) { wc_get_template( 'single-product/price.php' ); } } |
Таким образом вы сможете показать нормальные цены на ваши вариативные товары. Больше не придется мучиться. Кстати наше решение работает на всем сайте, глобально. Пожалуйста, отпишите в комментариях получилось ли у вас все сделать. Буду благодарен за ссылочку на нас
Залишити відповідь