Dalam WooCommerce, halaman produk berubah memaparkan julat harga bukannya satu harga. Walaupun ini boleh berguna untuk sesetengah produk, ia boleh menjadi tidak diingini dalam kes lain. Artikel ini menyediakan penyelesaian untuk menggantikan julat harga dengan harga variasi yang dipilih, memastikan bahawa hanya harga tersedia terendah dipaparkan.
Untuk mencapainya, kami akan menggunakan fungsi PHP tersuai dan skrip jQuery. Fungsi PHP akan mengalih keluar julat harga lalai dan menggantikannya dengan harga pemegang tempat. Skrip jQuery kemudiannya akan mengemas kini harga pemegang tempat dengan harga variasi yang dipilih apabila variasi dipilih.
Berikut ialah kod yang akan mengendalikan perkara ini:
add_action( 'woocommerce_before_single_product', 'move_variations_single_price', 1 ); function move_variations_single_price(){ global $product, $post; if ( $product->is_type( 'variable' ) ) { // removing the variations price for variable products remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 ); // Change location and inserting back the variations price add_action( 'woocommerce_single_product_summary', 'replace_variation_single_price', 10 ); } } function replace_variation_single_price(){ global $product; // Main Price $prices = array( $product->get_variation_price( 'min', true ), $product->get_variation_price( 'max', true ) ); $price = $prices[0] !== $prices[1] ? sprintf( __( 'From: %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( __( 'From: %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() ){ if($('p.availability')) $('p.availability').remove(); $('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>'; }
Kod boleh diletakkan dalam sebarang fail PHP dalam tema anak anda atau fail functions.php tema. Anda disyorkan untuk menggunakan tema kanak-kanak untuk mengelak kehilangan sebarang penyesuaian semasa mengemas kini tema anda.
Setelah kod ditambahkan, halaman produk berubah akan menunjukkan harga tersedia terendah dan bukannya julat harga. Apabila variasi dipilih, harga akan dikemas kini untuk menggambarkan harga variasi yang dipilih.
Penyelesaian ini serasi dengan WooCommerce 3 dan ke atas. Ia menggantikan julat harga berubah dengan harga variasi yang dipilih, memastikan pelanggan melihat harga yang jelas dan tepat untuk variasi produk yang dipilih.
Atas ialah kandungan terperinci Bagaimana untuk Memaparkan Harga Variasi Terpilih Daripada Julat Harga pada Halaman Produk Pembolehubah WooCommerce?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!