Ed777
Ответы в темах
-
@takeback пока работает, ошибок не вижу, Вы не добавили показывать одинаковую стоимость вариативного товара, я добавил. Потестю отпишусь. Не совсем понял о том что вы написали в P.S. при добавлении в корзину у меня количество не увеличивается!
Спасибо Вам огромное!
Готовый кодadd_action( 'woocommerce_before_single_product', 'check_if_variable_first' ); function check_if_variable_first(){ if ( is_product() ) { global $post; $product = wc_get_product( $post->ID ); if ( $product->is_type( 'variable' ) ) { // removing the price of variable products remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 ); //Показываем одинаковую стоимость вариативных товаров add_filter('woocommerce_available_variation', function ($value, $object = null, $variation = null) { if ($value['price_html'] == '') { $value['price_html'] = '<span class="price">' . $variation->get_price_html() . '</span>'; } return $value; }, 10, 3); // Change location of add_action( 'woocommerce_single_product_summary', 'custom_wc_template_single_price', 10 ); function custom_wc_template_single_price(){ global $product; // Variable product only if($product->is_type('variable')): // Main Price foreach($product->get_available_variations() as $pav){ $def=true; foreach($product->get_variation_default_attributes() as $defkey=>$defval){ if($pav['attributes']['attribute_'.$defkey]!=$defval){ $def=false; } } if($def){ $price = $pav['price_html' ] ; } } ?> <style> div.woocommerce-variation-price, div.hidden-variable-price { height: 0px !important; overflow:hidden; position:relative; line-height: 0px !important; font-size: 0% !important; } </style> <script> jQuery(document).ready(function($) { $('select').blur( function(){ if( '' != $('input.variation_id').val() ){ $('p.price').html($('div.woocommerce-variation-price > span.price').html()).append('<p class="availability">'.html()+'</p>'); console.log($('input.variation_id').val()); } else { $('p.price').html($('div.hidden-variable-price').html()); if($('p.availability')) $('p.availability').remove(); console.log('NULL'); } }); }); </script> <?php echo '<p class="price">'.$price. '</p> <div class="hidden-variable-price" >'.$price.'</div>'; endif; } } } }
@takeback работает, но количество в наличии показывает только при выборе другого цвета и потом того который стоял по умолчанию, т.е. сразу не отображается количество. Это важно как по мне.
Так же в вариативных товарах надпись отображение количества в данном случаи отличается от других страниц без вариаций, как то больше шрифт стал.
http://prntscr.com/opfj8p
http://prntscr.com/opfjjc
http://prntscr.com/opfjqsВот другая страница с отображением В наличии, как было до установки кода, было везде так. http://prntscr.com/opflzt
@takeback проблема в тех товарах которые стоят с управлением склада, цена полностью пропадает и пропадает поле В наличии при установке кода, вместо цены при выборе вариации начинает отображаться количество в наличии.
http://prntscr.com/opf7u0
http://prntscr.com/opf7zy
http://prntscr.com/opf854
В остальных товарах которые идут без управления складом вроде все работает.@tuxfighter согласен с @takeback, тем более это вопрос этой же темы и этот же код который в самом начале этой темы.
@takeback открыл новую тему, хотя не понимаю логики форума. Спасибо!
@takeback и после установки первого варианта, не корректно отображается количество в наличии, после каждого изменения в вариации с новой строки отображается в наличии
http://prntscr.com/op6up2@takeback мне второй вариант тоже больше походит, но вот с ценами со скидкой не правильно работает, два раза перечеркивает полную стоимость товара. Код пытаюсь исправить, совместить Ваши два, но где то что то не то. Вот код для вставки, можете посмотреть что не так.
add_action( 'woocommerce_before_single_product', 'check_if_variable_first' ); function check_if_variable_first(){ if ( is_product() ) { global $post; $product = wc_get_product( $post->ID ); if ( $product->is_type( 'variable' ) ) { // removing the price of variable products remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 ); // Change location of add_action( 'woocommerce_single_product_summary', 'custom_wc_template_single_price', 10 ); function custom_wc_template_single_price(){ global $product; // Variable product only if($product->is_type('variable')): // Main Price foreach($product->get_available_variations() as $pav){ $def=true; foreach($product->get_variation_default_attributes() as $defkey=>$defval){ if($pav['attributes']['attribute_'.$defkey]!=$defval){ $def=false; } } if($def){ $price = $pav['price_html' ] ; } } // 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 && $product->is_on_sale() ) { $price = '<del>' . $saleprice . $product->get_price_suffix() . '</del> <ins>' . $price . $product->get_price_suffix() . '</ins>'; } ?> <style> div.woocommerce-variation-price, div.woocommerce-variation-availability, div.hidden-variable-price { height: 0px !important; overflow:hidden; position:relative; line-height: 0px !important; font-size: 0% !important; } </style> <script> jQuery(document).ready(function($) { $('select').blur( function(){ if( '' != $('input.variation_id').val() ){ $('p.price').html($('div.woocommerce-variation-price > span.price').html()).append('<p class="availability">'+$('div.woocommerce-variation-availability').html()+'</p>'); console.log($('input.variation_id').val()); } else { $('p.price').html($('div.hidden-variable-price').html()); if($('p.availability')) $('p.availability').remove(); console.log('NULL'); } }); }); </script> <?php echo '<p class="price">'.$price.'</p> <div class="hidden-variable-price" >'.$price.'</div>'; endif; } } } }
@takeback спасибо, очень долго искал. Подскажите при вставке кода пишет слово ОТ, можно как то убрать это ОТ.