Ich versuche, die folgenden Informationen auf einer WooCommerce-Einzelproduktseite zu erhalten, um den Standardpreisstil von WooCommerce zu ersetzen.
Wenn Artikel im Angebot ist, möchte ich in der Lage sein, den Originalpreis und den reduzierten Preis zu erhalten und ihn in einem Tauchgang für weiteres Styling wiederzugeben. Ich versuche, so etwas zu erreichen.
Bin ich am richtigen Ort? Weiß jemand, wie ich auf diese Attribute zugreifen kann?
Vielen Dank
Daniel
Hauptfunktion zum Anzeigen von Preisen ist get_price_html() in /woocommerce/includes/abstracts/abstract-wc-product.php Datei, und es gibt einige Filter, mit denen Benutzer den HTML-Code für Preise anpassen können:
woocommerce_sale_price_html
woocommerce_price_html
woocommerce_empty_price_html
woocommerce_free_sale_price_html
woocommerce_free_price_html
woocommerce_get_price_html
Diese Funktion führt einen vollständigen Job zum Anzeigen von Preisen einschließlich Steuern und Rabattberechnungen aus, und da Sie die HTML-Datei komplett neu schreiben, verwendet das Beispiel unten den letzten Filter dort woocommerce_get_price_html. Es extrahiert die Preise aus dem ursprünglichen HTML und fügt sie in eine neue HTML-Struktur ein.
add_filter( 'woocommerce_get_price_html', function( $price, $product )
{
global $woocommerce_loop;
// check if we are in single product page, in main section, and if product has price and is on sale
if ( is_product() && !isset( $woocommerce_loop ) && $product->get_price() && $product->is_on_sale() ) {
// collect prices from $price html string
$prices = array_map( function( $item ) {
return array( $item, (float) preg_replace( "/[^0-9.]/", "", html_entity_decode( $item, ENT_QUOTES, 'UTF-8' ) ) );
}, explode( ' ', strip_tags( $price ) ) );
$price = isset( $prices[0][0] ) ? '<span class="orig-price">Original Price: ' . $prices[0][0] . '</span>' : '';
$price .= isset( $prices[1][0] ) ? '<span class="sale-price">Sale Price: ' . $prices[1][0] . '</span>' : '';
if ( $product->get_regular_price() ) {
// set saved amount with currency symbol placed as defined in options
$price .= '<span class="saved">You saved: ' . sprintf( get_woocommerce_price_format(), get_woocommerce_currency_symbol(), $prices[0][1] - $prices[1][1] ) . '</span>';
}
}
return $price;
}, 10, 2 );
Ich verwende hier span-Tags anstelle der fraglichen divs, da die Ausgabe immer noch in einen Absatz eingeschlossen ist. Für weitere Anpassungen überschreiben Sie die Vorlage price.php, indem Sie sie darin platzieren /themes/yourtheme/woocommerce/single-product/ Mappe.
Vielen Dank. Dies scheint zu funktionieren, bis auf den eingesparten Betrag. Es wird nicht angezeigt. Originalpreis und Verkaufspreis funktionieren gut.
– Wayne
27. April 2014 um 10:58 Uhr
Es wird überhaupt nicht angezeigt oder nur der Betrag, es hat gut funktioniert, als ich es getestet habe. Der Verkaufsbetrag wird nur für Produkte angezeigt, die im Angebot sind, und nicht für Produkte mit Preisschwankungen oder Produkten zu regulären Preisen, übrigens. Ich verwende WC 2.1.5.
– Daniel
27. April 2014 um 11:28 Uhr
Es zeigt sich überhaupt nicht. sehen Verknüpfung Es gibt nur 200 $ und 150 $, die Originalpreis und Verkaufspreis sind. Wie kann ich es schaffen, jedes für sich auszugeben? nicht verkettet, damit ich sie an die richtige Stelle setzen kann. Vielen Dank
– Wayne
27. April 2014 um 12:00 Uhr
Verwenden Sie var_dump für das $prices-Array, um zu sehen, was passiert. Jede einzeln auszugeben ist ziemlich schwierig. Sie können die oben aufgeführten Filter für die individuelle Preisformatierung verwenden, aber am Ende wird alles verkettet. Wenn Sie tiefer gehen möchten, öffnen Sie die Datei abstract-wc-product.php, um zu sehen, wie Preise generiert werden und welche Funktionen und Aktionen verfügbar sind.
– Daniel
27. April 2014 um 12:12 Uhr
dies ist das Ergebnis des Vardump. array(2) { [0]=> array(2) { [0]=> string(11) "$200.00" [1]=> float(36200) } [1]=> array(2) { [0]=> string(11) "$150.00" [1]=> float(36150) } } es gibt keinen Wert von gespeichert. auch, warum gibt es 36200 und 36150. sollten es nicht nur 200 und 150 sein? Warum gibt es 36 vor beiden Float-Preisen? (Originalpreis und Verkaufspreis)
– Wayne
27. April 2014 um 14:17 Uhr
Ratnakar – StoreApps
Dies kann durch Überschreiben der Woocommerce-Vorlage erreicht werden. Erstellen Sie eine neue PHP-Datei, schreiben Sie Ihre div-Struktur in diese Datei.
Hoffe, das wird Sie in die richtige Richtung bewegen
Das Problem besteht im Moment darin, die Preise abzurufen und dann Vorlagen zu überschreiben. Ich habe zu dieser Dokumentation gehört und es wird unter Vorlagen die Datei price.php angezeigt, und es wird der Grundpreis angezeigt. müssen Verkaufspreis, Rabatt, prozentualer Rabatt usw. genommen werden. Gibt es dafür Unterlagen?
– Wayne
27. April 2014 um 12:12 Uhr
13122100cookie-checkSo erhalten Sie Woocommerce-Preisattributeyes