Ich habe einen Online-Shop in WooCommerce und es gibt eine Option, die lautet: Wenn x Zeitdauer erreicht ist, ändern Sie den Status dieser Bestellung in storniert und legen Sie auch den Bestand fest, in dem er sich vor dem Absenden der Bestellung befand.
Ich möchte es ändern, wenn x Zeitdauer erreicht ist, dann wird der Bestellstatus auf “Abgeschlossen” geändert und auch der Artikel wurde aus dem Lagerbestand reduziert.
Soweit ich weiß, ist das der Code für Lagerbestand reduzieren und Bestellung stornieren.
/**
* woocommerce_cancel_unpaid_orders function.
*
* @access public
* @return void
*/
function woocommerce_cancel_unpaid_orders() {
global $wpdb;
$held_duration = get_option( 'woocommerce_hold_stock_minutes' );
if ( $held_duration < 1 || get_option( 'woocommerce_manage_stock' ) != 'yes' )
return;
$date = date( "Y-m-d H:i:s", strtotime( '-' . absint( $held_duration ) . ' MINUTES', current_time( 'timestamp' ) ) );
$unpaid_orders = $wpdb->get_col( $wpdb->prepare( "
SELECT posts.ID
FROM {$wpdb->posts} AS posts
LEFT JOIN {$wpdb->term_relationships} AS rel ON posts.ID=rel.object_ID
LEFT JOIN {$wpdb->term_taxonomy} AS tax USING( term_taxonomy_id )
LEFT JOIN {$wpdb->terms} AS term USING( term_id )
WHERE posts.post_type="shop_order"
AND posts.post_status="publish"
AND tax.taxonomy = 'shop_order_status'
AND term.slug IN ('pending')
AND posts.post_modified < %s
", $date ) );
if ( $unpaid_orders ) {
foreach ( $unpaid_orders as $unpaid_order ) {
$order = new WC_Order( $unpaid_order );
if ( apply_filters( 'woocommerce_cancel_unpaid_order', true, $order ) )
$order->update_status( 'cancelled', __( 'Unpaid order cancelled - time limit reached.', 'woocommerce' ) );
}
}
wp_clear_scheduled_hook( 'woocommerce_cancel_unpaid_orders' );
wp_schedule_single_event( time() + ( absint( $held_duration ) * 60 ), 'woocommerce_cancel_unpaid_orders' );
}
add_action( 'woocommerce_cancel_unpaid_orders', 'woocommerce_cancel_unpaid_orders' );
Ich persönlich habe diese Änderungen vorgenommen, sind sie sinnvoll?
/**
* woocommerce_cancel_unpaid_orders function.
*
* @access public
* @return void
*/
function woocommerce_cancel_unpaid_orders() {
global $wpdb;
$held_duration = get_option( 'woocommerce_hold_stock_minutes' );
if ( $held_duration < 1 || get_option( 'woocommerce_manage_stock' ) != 'yes' )
return;
$date = date( "Y-m-d H:i:s", strtotime( '-' . absint( $held_duration ) . ' MINUTES', current_time( 'timestamp' ) ) );
$unpaid_orders = $wpdb->get_col( $wpdb->prepare( "
SELECT posts.ID
FROM {$wpdb->posts} AS posts
LEFT JOIN {$wpdb->term_relationships} AS rel ON posts.ID=rel.object_ID
LEFT JOIN {$wpdb->term_taxonomy} AS tax USING( term_taxonomy_id )
LEFT JOIN {$wpdb->terms} AS term USING( term_id )
WHERE posts.post_type="shop_order"
AND posts.post_status="publish"
AND tax.taxonomy = 'shop_order_status'
AND term.slug IN ('pending')
AND posts.post_modified < %s
", $date ) );
if ( $unpaid_orders ) {
foreach ( $unpaid_orders as $unpaid_order ) {
$order = new WC_Order( $unpaid_order );
if ( apply_filters( 'woocommerce_payment_complete_order_status', true, $order ) )
$order->update_status( 'completed', __( 'order completed - time limit reached.', 'woocommerce' ) );
}
}
wp_clear_scheduled_hook( 'woocommerce_payment_complete_order_status' );
wp_schedule_single_event( time() + ( absint( $held_duration ) * 60 ), 'woocommerce_payment_complete_order_status' );
}
add_action( 'woocommerce_payment_complete_order_status', 'woocommerce_payment_complete_order_status' );
Ich habe diesen Filter ‘woocommerce_cancel_unpaid_order’ durch diesen woocommerce_payment_complete_order_status ersetzt
und diese geändert $order->update_status( ‘cancelled’, __( ‘Unbezahlte Bestellung storniert – Zeitlimit erreicht.’, ‘woocommerce’ ) );
mit diesem
$order->update_status( ‘abgeschlossen’, __( ‘Bestellung abgeschlossen – Zeitlimit erreicht.’, ‘woocommerce’ ) );
noch nicht getestet bcz Ich möchte eine Bestätigung, bevor ich es teste.
Können Sie Ihre Änderungen hervorheben? Und erklären Sie die Ergebnisse, die Sie erwarten, und das Ergebnis, das Sie erhalten?
– Brasilo
14. November 2013 um 21:47 Uhr
Bitte überprüfen Sie, dass ich aktualisiert habe
– Muhammad Waqas
15. November 2013 um 7:51 Uhr
Hast du darauf eine Antwort gefunden?
– madebydavid
17. Januar 2014 um 21:44 Uhr