Legen Sie den Produktverkaufspreis bedingt basierend auf benutzerdefinierten Feldern in Woocommerce fest

Lesezeit: 3 Minuten

Legen Sie den Produktverkaufspreis bedingt basierend auf benutzerdefinierten Feldern in
Sakarya

In Woocommerce habe ich zwei benutzerdefinierte Felder in meinen Produkten festgelegt:

  1. iadi_price zu einem individuellen Verkaufspreis.
  2. iadi_date für ein individuelles Datum.

Ich möchte den Verkaufspreis aktualisieren, wenn zwischen dem angegebenen Datum und heute weniger als 3 Tage liegen.

Ich habe folgenden Code geschrieben:

function fiyatidegistir() {
global $product;
$bugun = time();
$yenifiyat = get_post_meta($product->ID, 'iadi_price', true); //new sale price
$kgn = get_post_meta($product->ID, 'iadi_date', true); // date
if(!empty($kgn)) {
    $kalan = $kgn - $bugun;
    $dakika = $kalan / 60;
    $saat = $dakika / 60;
    $gun = $saat / 24;
    $yil = floor($gun/365);
    $gun_farki = floor($gun - (floor($yil) * 365));
    if($gun_farki<4 && !empty($yenifiyat)) {
        update_post_meta($product->ID, '_price', $yenifiyat);
    }
}
}
add_action( 'woocommerce_before_main_content', 'fiyatidegistir'); 

Aber es geht nicht und nichts passiert.

Was mache ich falsch? Wie kann ich einen Produktverkaufspreis programmgesteuert basierend auf benutzerdefinierten Preis- und Datumsfeldern wie erläutert ändern?

1647256744 213 Legen Sie den Produktverkaufspreis bedingt basierend auf benutzerdefinierten Feldern in
LoicTheAztec

Es ist keine gute Idee, dies so zu tun, da:

  • Wie Sie die aktualisierten Produkte verwalten, um mehrere aufeinanderfolgende Preisaktualisierungen zu vermeiden.
  • Auf diese Weise wird Ihre Website einfach zerstört (für viele Prozesse).
  • Ihre Produkte werden nicht zum Verkauf angeboten, wenn Sie den aktiven Preis aktualisieren
  • Nach Ablauf des Zeitraums können Sie nicht mehr zum ursprünglichen Preis zurückkehren.

Außerdem ist Ihr Code voller Fehler in Bezug auf WC_Products in Woocommerce und in Bezug auf Datumsberechnungen. Letzte Sache, wenn Sie Code schreiben, ist es besser, Variablen und Funktionen auf Englisch zu benennen und Ihren Code auch auf Englisch zu kommentieren, da jeder ihn verstehen kann.

Versuchen Sie stattdessen Folgendes, das für einfache Produkte funktioniert und einen Verkaufspreis für die verwandten Produkte anzeigt, wenn Ihre Bedingungen übereinstimmen (Datum und benutzerdefinierter Preis):

add_filter( 'woocommerce_product_get_price', 'conditional_product_sale_price', 20, 2 );
add_filter( 'woocommerce_product_get_sale_price', 'conditional_product_sale_price', 20, 2 );
function conditional_product_sale_price( $price, $product ) {
    if( is_admin() ) return $price;

    $new_price = get_post_meta( $product->get_id(), 'iadi_price', true ); //new sale price
    $date      = get_post_meta( $product->get_id(), 'iadi_date', true ); // date

    if( ! empty($date) && ! empty($new_price) ) {
        $date_time      = (int) strtotime($date); // Convert date in time
        $now_time       = (int) strtotime("now"); // Now time in seconds
        $one_day        = 86400; // One day in seconds

        // Calculate the remaining days
        $remaining_days = floor( ( $date_time - $now_time ) / $one_day );

        if( $remaining_days >= 0 && $remaining_days < 4  )
            $price = $new_price;
    }
    return $price;
}

Der Code wird in die function.php-Datei Ihres aktiven untergeordneten Designs (oder aktiven Designs) eingefügt. Getestet und funktioniert.

Geben Sie hier die Bildbeschreibung ein

  • Danke. Wir verkaufen Ausbildungen. In den letzten drei Tagen sind die Ticketpreise für fünf Tage unterschiedlich. Wir ändern sie manuell, ich wollte es auf einfache Weise tun / lernen.

    – Sakarya

    24. Mai 2018 um 11:39 Uhr

Falls Sie hierher gekommen sind, damit es mit Variationen funktioniert, benötigen Sie alle folgenden Filter:

add_filter( 'woocommerce_product_get_price', 'conditional_product_sale_price', 10, 2 );
add_filter( 'woocommerce_product_variation_get_price', 'conditional_product_sale_price', 10, 2 );
add_filter( 'woocommerce_product_get_sale_price', 'conditional_product_sale_price', 10, 2 );
add_filter( 'woocommerce_product_variation_get_sale_price', 'conditional_product_sale_price', 10, 2 );
add_filter( 'woocommerce_variation_prices_price', 'conditional_product_sale_price', 10, 2 );
add_filter( 'woocommerce_variation_prices_sale_price', 'conditional_product_sale_price', 10, 2 );

Und Sie müssen sicherstellen, dass Sie die geändert haben woocommerce_get_variation_prices_hash wegen der gespeicherten Transienten.

Vielleicht finden Sie das Wesentliche, das ich für einen Kunden erstellt habe, nützlich

https://www.rent-a-ninja.org/programming/wordpress-plugin-entwickler-naehe-graz/woocommerce-custom-sale-price-for-custom-role/

1001270cookie-checkLegen Sie den Produktverkaufspreis bedingt basierend auf benutzerdefinierten Feldern in Woocommerce fest

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

Privacy policy