Hinzufügen des Rabattprozentsatzes zu variablen Produkten im Angebot

Lesezeit: 4 Minuten

Ich versuche, auf einer Website, die WooCommerce verwendet, einen prozentualen Rabatt neben dem Preis hinzuzufügen.

Ich habe dieses Skript für den Standardpreis und den Verkaufspreis angewendet:

// Add save percentage next to sale item prices.
add_filter( 'woocommerce_get_price_html', 'adventure_tours_sales_price', 10, 2 );
function adventure_tours_sales_price( $price, $product ){
  $percentage = round( ( ( $product->regular_price - $product->sale_price ) / $product->regular_price ) * 100 );
  return $price . sprintf( __(' Save %s', 'woocommerce' ), $percentage . '%' );
}

Das obige Skript funktioniert.

Hinzufugen des Rabattprozentsatzes zu variablen Produkten im Angebot

Im Front-End habe ich den Preisprozentsatz.

1646264947 550 Hinzufugen des Rabattprozentsatzes zu variablen Produkten im Angebot

Jetzt möchte ich dasselbe Skript auf den Produktvariationspreis anwenden.

Ich habe die Produktvariationsoption überprüft und so etwas versucht:

// Add save percentage next to sale item prices.
add_filter( 'woocommerce_get_price_html', 'adventure_tours_sales_price', 10, 2 );
function adventure_tours_sales_price( $price, $product ){
  if( $product->is_type( 'variable' ) ) {
    $percentage = round( ( ( $product->regular_price - $product->sale_price ) / $product->regular_price ) * 100 );
    return $price . sprintf( __(' Save %s', 'woocommerce' ), $percentage . '%' );
  }else{
    $percentage = round( ( ( $product->regular_price - $product->sale_price ) / $product->regular_price ) * 100 );
    return $price . sprintf( __(' Save %s', 'woocommerce' ), $percentage . '%' );
  }
}

Aber es funktioniert nicht, der Prozentsatz wird nicht auf den Preis angewendet.

1646264948 713 Hinzufugen des Rabattprozentsatzes zu variablen Produkten im Angebot

Auch nicht im Frontend.

1646264949 421 Hinzufugen des Rabattprozentsatzes zu variablen Produkten im Angebot

  • Niemand hier kann Gedanken lesen. Beschreiben Sie im Hauptteil der Frage, was “funktioniert immer noch nicht” bedeutet. Fehlermeldungen? Protokolle? Irgendetwas?

    Benutzer1531971

    14. Februar 2017 um 15:38 Uhr

  • Bitte fügen Sie Ihren Fragen keinen Dank hinzu.

    – Paläc

    26. Februar 2017 um 22:12 Uhr

Hinzufugen des Rabattprozentsatzes zu variablen Produkten im Angebot
LoicTheAztec

Aktualisiert für WooCommerce Version 3+ | Veraltete Ersetzungen

  • Ersetzt ‘woocommerce_variable_sale_price_html’ durch ‘woocommerce_variable_get_price_html’
  • Ersetzt ‘woocommerce_sale_price_html’ durch ‘woocommerce_get_price_html’
  • ‘woocommerce_price()’ durch ‘wc_price()’ ersetzt
  • Ersetzt WC_Product Preis Immobilien nach WC_Product Preis Methoden

Bei variablen Produkten ist dies komplizierter, da Sie 2 verschiedene Standorte mit Preisen haben, der erste zeigt den minimalen und maximalen Preis (wenn Sie mehrere Variationen haben) und der zweite zeigt den Preis aus den ausgewählten Variationen an. Ich habe viel Ihren ursprünglichen Code geändert.

Hier der richtige Code, um anzuzeigen, dass benutzerdefinierte dynamische Labels um ermäßigte Prozentsätze herum angezeigt werden:

add_filter('woocommerce_variable_get_price_html','adventure_tours_sales_price', 10, 2 );
add_filter('woocommerce_get_price_html','adventure_tours_sales_price', 10, 2 );
function adventure_tours_sales_price( $price, $product ){

    // Variables initialisation
    $regular_price = $product->get_regular_price();
    $sale_price    = $product->get_sale_price();
    $save_text     = __('Save', 'woocommerce') . ' ';

    if(!empty($sale_price)) {
        // Percentage calculation
        $percentage="<span class="save-percent"> " .$save_text . round( ( ( $regular_price -  $sale_price ) / $regular_price ) * 100 ) . '%</span>';

        $price="<del class="strike">" . wc_price( $regular_price ) . '</del>
        <ins class="highlight">' . wc_price( $sale_price )  . $percentage . '</ins>';
    } else {
        $price="<ins class="highlight">".wc_price( $regular_price ).'</ins>';
    }
    return $price;
}

add_filter('woocommerce_variable_get_price_html', 'adventure_tours_sales_min_max_prices', 20, 2);
function adventure_tours_sales_min_max_prices( $price, $product) {

    // Variables initialisation
    $variation_min_reg_price = $product->get_variation_regular_price('min', true);
    $variation_max_reg_price = $product->get_variation_regular_price('max', true);
    $variation_min_sale_price = $product->get_variation_sale_price('min', true);
    $variation_max_sale_price = $product->get_variation_sale_price('max', true);
    $percentage_min = '';
    $percentage_max = '';
    $save_text     = __('Save', 'woocommerce') . ' ';

    // Percentage calculations
    if($variation_min_reg_price != $variation_min_sale_price)
        $percentage_min = '<span class="save-percent-min"> (' .$save_text . round( ( ( $variation_min_reg_price -  $variation_min_sale_price ) / $variation_min_reg_price ) * 100 ) . '%)</span>';
    if($variation_max_reg_price != $variation_max_sale_price)
        $percentage_max = '<span class="save-percent-max"> (' .$save_text . round( ( ( $variation_max_reg_price -  $variation_max_sale_price ) / $variation_max_reg_price ) * 100 ) . '%)</span>';

    if (($variation_min_reg_price != $variation_min_sale_price) || ($variation_max_reg_price != $variation_max_sale_price)) {
        $price="<del class="strike">" . wc_price($variation_min_reg_price) . '-' . wc_price($variation_max_reg_price) .  '</del>
        <ins class="highlight">' . wc_price($variation_min_sale_price) . $percentage_min . ' - ' . wc_price($variation_max_sale_price) . $percentage_max . '</ins>';
    }
    return $price;
}

Code geht in die functions.php-Datei Ihres aktiven Child-Themes (oder Themes) oder auch in jede Plugin-Datei.

Getestet und funktioniert auf Woocommerce Version 3+

Geben Sie hier die Bildbeschreibung ein


Verwandte Antworten:

  • Hinzufügen von benutzerdefinierten Textetiketten zu den Preisen, wenn Produkte zum Verkauf angeboten werden
  • Bedingte benutzerdefinierte Ausgabe um den Verkaufspreis und den regulären Preis der Produkte herum

  • Hallo, ich habe diesen Code in meine functions.php eingefügt – aber es wird nichts angezeigt? Habe ich etwas verpasst … thx

    – evavienna

    18. Januar 2018 um 7:56 Uhr

  • Ersetzen Sie in einer neueren Version von WooCommerce den folgenden Text: Ersetzen Sie ‘woocommerce_variable_sale_price_html’ durch ‘woocommerce_variable_get_price_html’ und ersetzen Sie ‘woocommerce_sale_price_html’ durch ‘woocommerce_get_price_html’.

    – Nitin

    24. Januar 2018 um 10:35 Uhr


917410cookie-checkHinzufügen des Rabattprozentsatzes zu variablen Produkten im Angebot

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy