Lieferzeit für Produkte, welche nicht am Lager sind
-
In unserem WooCommerce-Shop k?nnen Artikel über den Lagerbestand hinaus verkauft werden. Nur ist es dann so, dass die Lieferzeit sich dann auch ver?ndern soll. über die functions.php haben wir es geschafft für Produkte, welche im Lieferrückstand sind eine andere Lieferzeit anzeigen zu lassen.
Nur ist es aber so, dass wenn zum Beispiel vom Produkt 1 Stück auf Lager ist und der Kunde zwei Stück in den Warenkorb legt, im Warenkorb und an der Kasse weiterhin die Lieferzeit für die Lagermenge angezeigt wird. Was in diesem Fall leider der falsche Wert ist. Hier sollte die alternative Lieferzeit angezeigt werden.
Hat jemand eine Idee, wie wir es hinbekommen, dass im Warenkorb geprüft wird, ob die Menge im Warenkorb die Menge des Lagerbestands überschreit und in diesem Fall auf die zweite Lieferzeit ausgegeben wird?
Ich stehe leider auf dem Schlauch und meine PHP-Kenntnisse sind nicht all zu gross.
Folgenden Code haben wir aktuell in der functions.php im Einsatz
/*================================================ Lieferzeitenanzeige bei Lieferrückstand ================================================*/ add_action( 'woocommerce_process_product_meta', 'wdt_process_delivery_time_fallback', 10, 2 ); function wdt_process_delivery_time_fallback( $id, $post ){ $dtf_id = $_POST['delivery_time_fallback']; if( $dtf_id === '' ) { delete_post_meta( $id, '_delivery_time_fallback' ); } else { update_post_meta( $id, '_delivery_time_fallback', $dtf_id ); } } add_action( 'woocommerce_product_options_stock_status', 'wdt_add_deliver_time_fallback' ); function wdt_add_deliver_time_fallback() { // Lieferzeiten aus den Terms generieren $delivery_times = get_terms( array( 'taxonomy' => 'product_delivery_time', 'hide_empty' => false, ) ); $options[''] = __( 'Keine', 'woocommerce'); foreach ($delivery_times as $key => $term) { $options[$term->term_id] = $term->name; } // gew?hlte Lieferzeit aufbereiten $dtf_id = get_post_meta( get_the_ID(), '_delivery_time_fallback', true ); // Element generieren woocommerce_wp_select( array( 'id' => 'delivery_time_fallback', 'label' => __('Lieferzeit bei Lieferrückstand', 'woocommerce'), 'options' => $options, 'value' => $dtf_id, 'desc_tip' => true, 'description' => __( 'Lieferzeit die angezeigt wird, wenn sich der Artikel im Lieferrückstand befindet.' ), ) ); } add_filter( 'woocommerce_germanized_delivery_time_backorder_html', 'wdt_adjust_delivery_time_html', 10, 4 ); function wdt_adjust_delivery_time_html( $text, $product ) { // this must be a variation if we can find a parent_id if ( $product->get_parent_id() ) { $id = $product->get_parent_id(); } else { $id = $product->get_id(); } // let's try to find the parent delivery time in postmeta if ( metadata_exists( 'post', $id, '_delivery_time_fallback' ) ) { $delivery_times = get_terms( array( 'taxonomy' => 'product_delivery_time', 'hide_empty' => false, ) ); $dtf_id = get_post_meta( $id, '_delivery_time_fallback', true ); foreach ($delivery_times as $dtf) { if ( $dtf->term_id == $dtf_id) { $delivery_time = $dtf->name; break; } } } else { $delivery_time = '1-2 Wochen ab Bestelldatum'; } return 'Lieferzeit: '.$delivery_time; }
In den Germanized-Einstellungen haben wir die Option “Lieferzeit ausblenden falls das Produkt im Lieferrückstand ist.” aktiviert.
- The topic ‘Lieferzeit für Produkte, welche nicht am Lager sind’ is closed to new replies.