我希望获得基本的详细信息,例如客户的Order ID
,Name
和Phone
,当新的订单放在woocommerce上,然后将其保存到单独的MySQL表中。
以下是我正在尝试的代码,但这只是订单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' );
请帮助我获得所需的功能。
感谢。
答案 0 :(得分: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' );
答案 1 :(得分:0)
这是我搜索类似主题的第一个结果,我认为我会做出贡献。对我来说,问题与这样一个事实有关:当我运行我的测试时(即使购物车内容发生变化),woocommerce正在拾取并修改未完成的订单,而不是创建一个新订单,所以" new_order&# 34;行动没有在后续行动中触发 - 这看起来就像行动根本不起作用。
进入后端的订单标签,删除上一个未完成的订单。下次结账时," new_order"行动应该触发。