Was mache ich falsch? Wie kann ich einen Produktverkaufspreis programmgesteuert basierend auf benutzerdefinierten Preis- und Datumsfeldern wie erläutert ändern?
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.
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: