Woocommerce - 将新订单详细信息复制到新表

时间:2014-11-10 12:30:19

标签: php mysql wordpress woocommerce

我之前在这里找到了下面的脚本,但是无法让它工作。基本上我想将基本订单详细信息复制到一个新表(在同一个数据库中),所以我可以从非wordpress页面运行一些报告。我已经更改了表名和字段,并将其复制到主题中的functions.php中。但它似乎没有做任何事情。任何帮助都会很棒,我真的很困难。我正在运行woocommerce 2.2.8,如果这有任何区别。

function add_neworders ($order_id) {
global $woocommerce;
$order = new WC_Order( $order_id );
$total = $order->order_total;
$date = $order->order_date;

global $wpdb;
$table =  $wpdb->prefix . 'finacedata';

$wpdb->insert($table, array( 

'desctipion' => $name, 
'status' => '2',
'date' => $date,
'amount' => $total,
'invoice' => $order_id,
));

add_action( 'woocommerce_new_order', 'add_neworders' );}

2 个答案:

答案 0 :(得分:2)

这可能是一个迟到的答案,但woocommerce_new_order动作在创建订单时运行,但数据尚未填充,因此一切都是空的。

使用woocommerce_checkout_order_processed操作,该操作在创建订单时运行,并且存储所有订单数据(如订单项)。

答案 1 :(得分:0)

您无法将add_action添加到函数中。放在功能之外:

function add_neworders ($order_id) {
    global $woocommerce;
    $order = new WC_Order( $order_id );
    $total = $order->order_total;
    $date = $order->order_date;

    global $wpdb;
    $table =  $wpdb->prefix . 'finacedata';

    $wpdb->insert($table, array(

    'desctipion' => $name,
    'status' => '2',
    'date' => $date,
    'amount' => $total,
    'invoice' => $order_id,
    ));
}
add_action( 'woocommerce_new_order', 'add_neworders' );