Sto riscontrando il momento più difficile per la creazione di un ordine in WooCommerce. Sto usando il codice qui sotto ed è DOES creare un ordine, MA non posso ottenere informazioni sui clienti O elementi di linea di prodotti aggiunti all'ordine. Il nuovo ordine che viene creato è semplicemente Guest senza articoli, informazioni utente, ecc.Creazione di un nuovo ordine in Woocommerce a livello di programmazione
Il problema sembra essere che una volta creato l'oggetto ordine, non riesce quando si tenta di aggiungere dati all'ordine.
function create_vip_order() {
global $woocommerce;
$address = array(
'first_name' => '111Joe',
'last_name' => 'Conlin',
'company' => 'Speed Society',
'email' => '[email protected]',
'phone' => '760-555-1212',
'address_1' => '123 Main st.',
'address_2' => '104',
'city' => 'San Diego',
'state' => 'Ca',
'postcode' => '92121',
'country' => 'US'
);
// Now we create the order
$order = wc_create_order();
// The add_product() function below is located in /plugins/woocommerce/includes/abstracts/abstract_wc_order.php
$order->add_product(get_product('275962'), 1); // This is an existing SIMPLE product
$order->set_address($address, 'billing');
//
$order->calculate_totals();
$order->update_status("Completed", 'Imported order', TRUE);
}
add_action('woocommerce_init', 'create_vip_order');
Qui è l'errore che sto ottenendo in miei log:
[19-Apr-2016 21:16:38 UTC] PHP Fatal error: Uncaught Error: Call to a member function add_product() on boolean in /Users/joe/Sites/speedsociety-2/wp-content/themes/ss/lib/contests/order.php:107
Stack trace:
#0 /Users/joe/Sites/speedsociety-2/wp-includes/plugin.php(525): create_vip_order('')
#1 /Users/joe/Sites/speedsociety-2/wp-content/plugins/woocommerce/woocommerce.php(330): do_action('woocommerce_ini...')
#2 /Users/joe/Sites/speedsociety-2/wp-includes/plugin.php(525): WooCommerce->init('')
#3 /Users/joe/Sites/speedsociety-2/wp-settings.php(392): do_action('init')
#4 /Users/joe/Sites/speedsociety-2/wp-config.php(67): require_once('/Users/joe/Site...')
#5 /Users/joe/Sites/speedsociety-2/wp-load.php(37): require_once('/Users/joe/Site...')
#6 /Users/joe/Sites/speedsociety-2/wp-admin/admin.php(31): require_once('/Users/joe/Site...')
#7 /Users/joe/Sites/speedsociety-2/wp-admin/edit.php(10): require_once('/Users/joe/Site...')
#8 {main}
thrown in /Users/joe/Sites/speedsociety-2/wp-content/themes/ss/lib/contests/order.php on line 107
Qualsiasi aiuto su questo sarebbe molto apprezzato!
Senza vedere la funzione add_product possiamo solo immaginare, ma è probabile che sia il problema. – bucketman
È una funzione di WooCommerce e ora ho incluso il percorso completo di questa funzione nel codice. Dopo aver cercato questo, mi è sembrato molto comune nella maggior parte degli esempi che ho trovato usare $ order-> add_product, $ order-> set_address, ecc. Se c'è un altro modo in cui dovrei farlo, per favore fammelo sapere. –
sembra che la funzione restituisca false quando $ product o $ item_id non esistono. Potresti voler verificare se stai passando variabili valide.Quando si lavora con gli oggetti si consiglia di eseguire il codice nei blocchi try/catch in modo che possano rilevare gli errori sebbene non conosca la quantità di errori che gestiscono le classi woocommerce. – bucketman