Ich versuche, einen geschätzten Liefertermin im Einkaufswagen basierend auf dem Lagerstatus der Produkte im Einkaufswagen auszugeben.Anzeigen eines geschätzten Lieferzeitraums basierend auf dem WooCommerce-Einkaufswagenartikelbestand
Ich war ein bisschen erfolgreich, aber jetzt bin ich fest.
Dies ist, was ich bisher geschrieben habe. Es geht in der function.php
function lieferzeit() {
global $woocommerce;
$cart_items = $woocommerce->cart->get_cart();
foreach ($cart_items as $variation) {
$variation_id = $variation['variation_id'];
$variation_obj = new WC_Product_variation($variation_id);
$stock = $variation_obj->get_stock_quantity();
}
echo $stock; //outputs the in stock amount successfully
}
add_filter ('woocommerce_cart_collaterals', 'lieferzeit');
Jetzt versuche ich, den geschätzten Zeitpunkt hinzufügen, aber hier bin ich
function lieferzeit() {
global $woocommerce;
$cart_items = $woocommerce->cart->get_cart();
foreach ($cart_items as $variation) {
$variation_id = $variation['variation_id'];
$variation_obj = new WC_Product_variation($variation_id);
$stock = $variation_obj->get_stock_quantity();
}
for ($i=0; $i < count($stock) ; $i++) {
echo "Voraussichtliche Lieferung Date! ";
}
}
add_filter ('woocommerce_cart_collaterals', 'lieferzeit');
Hier das Datum ausgegeben werden definiert stecken haben. Ab heute +1 Tag bis heute +4 Tage. Aber ich habe keine Idee, wie ich das schaffen soll. Die beste Ausgabe wäre dieses Format:
Voraussichtliche Lieferung 14.7 - Mi. 19,7
ich nicht einmal bin shure wenn
for ($i=0; $i < count($stock) ; $i++) {
ist der richtige Weg zu gehen.
Ich habe zwei Arten von Produkten, eine kann innerhalb von 1-4 Tagen und die andere innerhalb von 14-21 Tagen versendet werden. Jetzt ist das zweite Problem. Wenn beide Typen im Warenkorb sind, sollte die höhere Lieferzeit gewählt werden.
Gibt es einige Ideen?
Update:
Der Code sollte die Bestandsmenge der einzelnen Elemente im Warenkorb überprüfen. Wenn alle Artikel eine Bestandsmenge größer als 0 haben, sollte eine geschätzte Lieferzeit von 1 bis 4 Arbeitstagen als Datum angegeben werden.
Wenn es einen Artikel im Warenkorb mit einer Lagermenge von 0 oder darunter gibt, sollte eine geschätzte Lieferzeit von 14 - 21 Arbeitstagen als Datum angegeben werden. Auch wenn alle anderen Artikel im Einkaufswagen eine Bestandsmenge größer als 0 haben.
Arbeitstage sollten Montag bis Freitag sein. Sehr ordentlich wäre es, wenn der Code Feiertage erkennt, z.B. Weihnachten, Neujahr etc ..
Dank
Die Lösung von LoicTheAztec funktioniert perfekt. Jetzt habe ich versucht, weitere Optionen hinzuzufügen.
Es wäre schön, wenn der Ausgang der function lieferzeit()
würde im Admin um Detailseite angezeigt werden. Um eine benutzerdefinierte Admin-Panel in der Sidebar erstelle ich
add_action('add_meta_boxes', 'add_meta_boxes');
function add_meta_boxes()
{
add_meta_box(
'woocommerce-order-my-custom',
__('Order Custom'),
'order_my_custom',
'shop_order',
'side',
'default'
);
}
function order_my_custom()
{
echo $lieferzeit;
}
Das funktioniert so weit und es gibt eine Bestellung Benutzerdefinierte Registerkarte in der Admin-Seite. Jetzt habe ich versucht, die Ausgabe von function lieferzeit()
in einer Variablen zu speichern.
$from = str_replace($days_en, $days_ge, $from);
$to = str_replace($days_en, $days_ge, $to);
$lieferzeit = array($from, $to);
Aber es scheint, dass function add_meta_boxes()
und function order_my_custom()
doen 'T nichts von der variablen $lieferzeit
kennen.
Gibt es eine andere Möglichkeit zum Speichern und Abrufen der Ausgabe von function lieferzeit()
?
ich Ihre Frage über die Produkte nur noch gesehen haben. Stackoverflow ist ein bisschen chaotisch :) Ich benutze sowohl einzelne als auch variable Produkte. Aber Ihre Lösung funktioniert für beide Typen sehr gut! – Max
** Ich habe meinen Code ** in Bezug auf einfachen und variablen Produktbestand aktualisiert ... ** Es sollte jetzt funktionieren ** ... * Sie könnten auch den Lagerstatus verwenden 'if ($ product_obj-> get_stock_status() ==' instock ') { 'oder' if ($ product_obj-> get_stock_status() == 'outofstock') {'* ... Ich hoffe diese Zeit ist OK – LoicTheAztec