Heim >Backend-Entwicklung >PHP-Tutorial >Wie zeige ich den gewählten Variationspreis anstelle der Preisspanne auf variablen Produktseiten von WooCommerce an?
In WooCommerce zeigt die variable Produktseite eine Preisspanne an statt eines Einzelpreises. Während dies bei manchen Produkten sinnvoll sein kann, kann es in anderen Fällen auch unerwünscht sein. Dieser Artikel bietet eine Lösung, um die Preisspanne durch den gewählten Variationspreis zu ersetzen und so sicherzustellen, dass nur der niedrigste verfügbare Preis angezeigt wird.
Um dies zu erreichen, verwenden wir eine benutzerdefinierte PHP-Funktion und ein jQuery-Skript. Die PHP-Funktion entfernt die Standardpreisspanne und ersetzt sie durch einen Platzhalterpreis. Das jQuery-Skript aktualisiert dann den Platzhalterpreis mit dem ausgewählten Variationspreis, wenn eine Variation ausgewählt wird.
Hier ist der Code, der dies erledigt:
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>'; }
Der Code kann eingefügt werden jede PHP-Datei in Ihrem untergeordneten Theme oder der Datei „functions.php“ des Themes. Es wird empfohlen, ein untergeordnetes Theme zu verwenden, um zu vermeiden, dass beim Aktualisieren Ihres Themes Anpassungen verloren gehen.
Sobald der Code hinzugefügt wurde, wird auf der variablen Produktseite der niedrigste verfügbare Preis anstelle der Preisspanne angezeigt. Wenn eine Variante ausgewählt wird, wird der Preis aktualisiert, um den Preis der ausgewählten Variante widerzuspiegeln.
Diese Lösung ist mit WooCommerce 3 und höher kompatibel. Es ersetzt die variable Preisspanne durch den ausgewählten Variationspreis und stellt so sicher, dass Kunden einen klaren und genauen Preis für die ausgewählte Produktvariation sehen.
Das obige ist der detaillierte Inhalt vonWie zeige ich den gewählten Variationspreis anstelle der Preisspanne auf variablen Produktseiten von WooCommerce an?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!