Heim > Fragen und Antworten > Hauptteil
Ich habe versucht, den Verkaufspreis meiner WooCommerce-Produkte von 0 auf „Mitglieder kostenlos“ zu ändern. Ich möchte den Verkaufspreis in einen benutzerdefinierten Text ändern, z. B.:
Ich habe im Internet gesucht und ein Code-Snippet gefunden, das dasselbe tut, aber das Problem ist, dass es auch den Verkaufspreis und den regulären Preis ändert.
Dies ist der Code, den ich auf Stack Overflow gefunden habe:
function my_wc_custom_get_price_html( $price, $product ) { if ( $product->get_price() == 0 ) { if ( $product->is_on_sale() && $product->get_regular_price() ) { $regular_price = wc_get_price_to_display( $product, array( 'qty' => 1, 'price' => $product->get_regular_price() ) ); $price = wc_format_price_range( $regular_price, __( 'Free for members!', 'woocommerce' ) ); } else { $price = '<span class="amount">' . __( 'Free!', 'woocommerce' ) . '</span>'; } } return $price; } add_filter( 'woocommerce_get_price_html', 'my_wc_custom_get_price_html', 10, 2 );
Das Problem ist, dass dieser Code auch die Durchstreichung des Normalpreises entfernt. Dies ist das Ergebnis, wenn ich versuche, etwas Inline-CSS hinzuzufügen, um Durchstreichungen hinzuzufügen:
Was ich erreichen möchte, ist, den Verkaufspreis wie im Screenshot unten gezeigt zu ändern:
P粉4208682942024-03-23 09:05:34
当产品以 0(零)价格促销时,尝试使用以下简化代码以自定义文本显示带删除线的正常价格:
add_filter( 'woocommerce_get_price_html', 'custom_formatted_sale_price_html', 10, 2 ); function custom_formatted_sale_price_html( $price_html, $product ) { if ( $product->is_on_sale() && $product->get_price() !== 0 ) { $regular_price = wc_get_price_to_display( $product, array( 'price' => $product->get_regular_price() ) ); $sale_price_text = $regular_price > 0 ? __( 'Free only for members!', 'woocommerce' ) : __( 'Free!', 'woocommerce' ); $style = $regular_price > 0 ? ' style="background-color:#08A04B;color:white;padding:0 5px;"' : ''; return '<del aria-hidden="true">' . wc_price( $regular_price ) . '</del> <span'.$style.'>' . $sale_price_text . '</span>'; } return $price_html; }
它应该按您的预期工作。