在Woocommerce中以编程方式创建新订单

我最困难的时间是在WooCommerce中以编程方式创建订单。我正在使用下面的代码,是否正在创建订单,但是我无法获得客户信息或添加到订单的产品线项目。创建的新订单只是访客,没有任何物品,用户信息等。

问题似乎是,一旦创建了订单对象,尝试向订单中添加数据时就会失败。

function create_vip_order() {

global $woocommerce;

$address = array(

'first_name' => '111Joe',

'last_name' => 'Conlin',

'company' => 'Speed Society',

'email' => 'joe@testing.com',

'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' );

这是我在日志中遇到的错误:

[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

任何帮助,将不胜感激!

回答:

问题出在您的动作挂钩上。使用以下钩子:

add_action('woocommerce_checkout_process', 'create_vip_order');

function create_vip_order() {

global $woocommerce;

$address = array(

'first_name' => '111Joe',

'last_name' => 'Conlin',

'company' => 'Speed Society',

'email' => 'joe@testing.com',

'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);

}

确保给定的产品ID在系统中。

以上是 在Woocommerce中以编程方式创建新订单 的全部内容, 来源链接: utcz.com/qa/401842.html

回到顶部