0

我希望在 woocommerce 上下新订单时获得客户的基本详细信息,然后将其保存到单独的 MySQL 表Order IDNamePhone

这是我正在尝试的代码,但它只是搜索订单 ID,而不是名称和电话。

function add_db($order_id)
{
    // order object (optional but handy)
    global $woocommerce;
    $order = new WC_Order( $order_id );
    mysql_connect("localhost", "root", "root") or die(mysql_error());
    mysql_select_db("wordpress") or die(mysql_error());

    $name = $order->billing_first_name;
    $phone = $order->billing_phone;

    mysql_query("INSERT INTO order_details (order_id, name, phone) VALUES ('$order_id', '$name', '$phone')") or die(mysql_error());
}
add_action( 'woocommerce_new_order', 'add_db' );

请帮助我获得所需的功能。

谢谢。

4

2 回答 2

0

您应该使用 wpdb 类将数据插入到您的 wordpress 数据库中。

像这样的东西:

function add_db($order_id) {
global $woocommerce;
$order = new WC_Order( $order_id );
$name = $order->billing_first_name;
$phone = $order->billing_phone;

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

$wpdb->insert($table, array( 

'order_id' => $order_id,
'name' => $name, 
'phone' => $phone,


));

add_action( 'woocommerce_new_order', 'add_db' );
于 2013-07-31T10:47:33.663 回答
0

这是我搜索类似主题的第一个结果,我想我会做出贡献。对我来说,问题与 woocommerce 正在接收并修改未完成的订单而不是在我运行测试时创建新订单(即使购物车内容发生变化)这一事实有关,因此“new_order”操作没有在后续运行时触发 - 看起来该操作根本不起作用。

进入后端的订单选项卡并删除您最后一个未完成的订单。下次结帐时,应该触发“new_order”操作。

于 2015-07-07T23:04:15.907 回答