2014-06-06 42 views
0

我已经与我的woocommerce商店开发了一个phonegap应用程序。 现在我想手动创建订单。 所以任何人都可以告诉我什么时候在woocommerce store中创建新订单时将多少数据插入到数据库中的哪些表中。我的意思是在生成新的订单时的数据,在这些数据中,表格和它们以何种方式存储。请帮助如何在woocommerce中手动创建订单?

回答

4

WooCommerce中的订单以表格wp_posts的形式存储为post_type = 'shop_order'

订单中的每个订单商品都存储在wp_woocommerce_order_items中,其中包含关于表wp_woocommerce_order_itemmeta中每个订单商品行的其他信息。

要添加新命令:

  1. 插入一个新的订单进入wp_posts
  2. 要求订单行添加到wp_woocommerce_order_items
  3. 对于每个订单行的,加上订单的详细信息到wp_woocommerce_order_itemmeta。从MySQL转储

示例数据:

INSERT INTO wp_posts VALUES (38,1,'2014-06-09 10:02:00','2014-06-09 10:02:00','','Order – June 9, 2014 @ 10:02 AM','','publish','closed','closed','','order','','','2014-06-09 10:02:43','2014-06-09 10:02:43','',0,'http://example.com/?post_type=shop_order&p=38',0,'shop_order','',0); 

INSERT INTO wp_woocommerce_order_items VALUES (33,'My product','line_item',38); 

INSERT INTO wp_woocommerce_order_itemmeta VALUES (167,33,'_qty','1'); 
INSERT INTO wp_woocommerce_order_itemmeta VALUES (168,33,'_tax_class',''); 
INSERT INTO wp_woocommerce_order_itemmeta VALUES (169,33,'_product_id','20'); 
INSERT INTO wp_woocommerce_order_itemmeta VALUES (170,33,'_variation_id',''); 
INSERT INTO wp_woocommerce_order_itemmeta VALUES (171,33,'_line_subtotal','13'); 
INSERT INTO wp_woocommerce_order_itemmeta VALUES (172,33,'_line_subtotal_tax',''); 
INSERT INTO wp_woocommerce_order_itemmeta VALUES (173,33,'_line_total','13'); 
INSERT INTO wp_woocommerce_order_itemmeta VALUES (174,33,'_line_tax',''); 

我建议你尝试手动创建与你想要的生成为了使设置数据库的顺序,这样你看到的关系以及您需要手动设置的各种设置。

+0

你们可以告诉我通过文件订单数据的时候插入数据库订单创建... –

+0

你是指在WordPress/WooCommerce的PHP文件中定期创建店内订单的代码? – Nils

+0

是的,并告诉我一件事,数据库中存储的订单的税额是多少 –

1

我在这段代码上花了很多时间 - 所以我想分享它。 它会创建一个新订单,并带有一件产品,通过客户的邮政编码将装运的货物添加到装运率一致的订单中。 我使用它为我的客户创建订购订单。

function create_order($user_id, $product_id) 
{ 
    $order = wc_create_order(); 
    $order->set_created_via("subscription"); 
    $product = wc_get_product($product_id); 
    $order->add_product($product, $quantity); 
    $order_id = $order->get_id(); 
    $postcode = get_user_meta($user_id, 'shipping_postcode', true); 
    $package = array('destination' => array('country' => 'IL', 'postcode' => $postcode)); 
    $zone = WC_Shipping_Zones::get_zone_matching_package($package); 
    $method = WC_Shipping_Zones::get_shipping_method($zone->get_id()); 

这是最难找到的。 get_shipping_method返回类名称。下一行创建它的实例。

$shipping = new $method; 

现在拿到货的价格:

$rate = new WC_Shipping_Rate(); 
$rate->id = 'flat_rate'; 
$rate->label = 'shipment'; 
$rate->cost = $shipping->cost; 
$rate->calc_tax = 'per_order'; // Not sure about this one 
// Adding it to the order 
$order->add_shipping($rate); 
$order->calculate_totals(); 

// assign the order to the current user 
update_post_meta($order->get_id(), '_customer_user', $user_id); 
// payment_complete 
$order->payment_complete();` 

复制账单和发货信息

 foreach (array('billing_first_name', 
'billing_last_name', 
'billing_phone', 
'billing_address_1', 
'billing_address_2', 
'shipping_first_name', 
'shipping_last_name', 
'shipping_address_1', 
'shipping_address_2', 
'shipping_city', 
'shipping_postcode') as $key) { 
$values = get_user_meta($user_id, $key); 
update_post_meta($order_id, "_" . $key, $values[0]); 
} 
相关问题