2015-10-07 16 views
5

Sto usando woo-commerce per il mio sito di shopping. Desidero aggiornare lo stato dell'ordine per completarlo dopo aver effettuato il pagamento e quindi tornare a una pagina di successo.aggiornamento woocommerce stato ordine dopo il processo di pagamento completo e reindirizzare per memorizzare

ho usato il seguente codice:

add_filter('woocommerce_payment_complete_order_status', 'my_change_status_function', 10, 2); 

function my_change_status_function ($order_status, $order_id) { 
    $order = new WC_Order($order_id); 
    return 'completed'; 
} 

Ma questa funzione è chiamata prima che il pagamento è stato effettuato e reindirizza alla pagina di pagamento.

Desidero modificare lo stato dopo che il pagamento è stato completato e quindi tornare all'URL redirect.

Ecco il mio link di reindirizzamento:

http://example.com/checkout/order-received/82/?key=wc_order_5614e28c9d183&state=return 

Ma lo stato non cambia quando uso il gancio woocommerce_payment_complete_order_status. Il gancio deve essere chiamato dopo che il pagamento è stato completato.

+0

fa sparare il filtro? quando l'ordine è completato? se non provi a cambiare 'add_filter' a' add_action', controlla questi link per maggiori informazioni [link] (https://wordpress.org/support/topic/woocommerce-on-order-complet-insert-quantity-data-into- custom-database-table), [Link 2] (http://www.rcorreia.com/woocommerce/woocommerce-automatically-set-order-status-payment-received/) – Noman

+0

@Noman yes filter licenziato, ma prima del pagamento effettuato . si attiva mentre il sito viene trasferito alla pagina di pagamento. lo voglio fuoco dopo il pagamento completo. –

+0

quindi è necessario aggiungere questo codice nella pagina 'order-received', che si attiva quando la pagina è in vista. – Noman

risposta

3

Provare a utilizzare il seguente codice nel vostro plugin

add_action('woocommerce_thankyou', 'my_change_status_function'); 

function my_change_status_function($order_id) { 

    $order = new WC_Order($order_id); 
    $order->update_status('completed'); 

} 
+0

Ho aggiunto il tuo codice nel mio file function.php ,,, ma non sta aggiornando lo stato dell'ordine ma ho effettuato il pagamento usando paypal? –

+0

Perché è così? –

0

Dai un'occhiata a questo pezzo di codice

add_action('woocommerce_checkout_order_processed', 'do_something'); 

function do_something($order_id) { 
    $order = new WC_Order($order_id); 
    // Do something 
} 
0

per contanti sul metodo di consegna, questo ha funzionato per me:

add_filter('woocommerce_cod_process_payment_order_status', 'prefix_filter_wc_complete_order_status', 10, 3); 

function prefix_filter_wc_complete_order_status($status, $order) { 
    return 'on-hold'; 
} 

Per la maggior parte degli altri metodi, questo ha funzionato:

add_filter('woocommerce_payment_complete_order_status', 'prefix_filter_wc_complete_order_status', 10, 3); 

function prefix_filter_wc_complete_order_status($status, $order_id, $order) { 
    return 'on-hold'; 
} 
Problemi correlati