我试图从woocommerce的functions.php文件中完成的 checkout 中提取数据。结帐后,我试图存储自定义生成的代码、生成订单的电子邮件以及订单的总金额。我无法从订单中提取任何数据,并且未能找到任何与此相关的文档。
checkout 成功完成后,必须提取数据。
该表包含“凭证代码”(每笔交易生成的唯一代码)、“用户电子邮件”和“订单总价”列。我找不到一个方法来抓取用户的电子邮件和订单后结帐总额。查询必须插入在函数中生成的凭证id、应从订单明细中获取的电子邮件、设置为0的兑换以及也应从订单明细中获取的值。
在woocommerce checkout 页面上,我有一个内部服务器错误和php致命错误:
调用成员函数 get_data()
在布尔值上。
add_action( 'woocommerce_email_before_order_table', 'generate_code');
function generate_code(){
$order = wc_get_order( $order_id );
$order_data = $order->get_data(); // The Order data
$order_billing_email = $order_data['billing']['email'];
$order_total_tax = $order_data['total_tax'];
$connection = DBLogin();
$query = "INSERT INTO test_vouchers (voucher_id, email, redeemed, value) VALUES ('$string','$order_billing_email','0','$order_total_tax')";
}
我做错了什么?如何解决此错误?
如何将订单总数和客户电子邮件存储在mysql数据库的自定义表中?
1条答案
按热度按时间093gszye1#
你的问题不是很清楚,也不够详细。我们不知道您是要将此数据添加到wordpress数据库或其他数据库的自定义表中。
如果您试图在wordpress数据库中的自定义表中插入数据,则应使用wpdb类(如我在回答中使用的),否则应使用最后一个代码段。
这个
$order_id
未定义,并且代码引发错误。还有变量$string
未定义,如果它是索引列,则不需要显示(如下面的第一个代码段中所示)。看来你的目标是“完成”的订单。使用
woocommerce_email_before_order_table
钩子将使您的代码被触发多次在每个电子邮件通知。而且这个钩子确实不方便触发任何数据库更改。当订单状态为“完成”时,将触发以下代码。所以有两种情况:
1) 在wordpress数据库中为自定义表执行操作:
代码放在活动子主题(或活动主题)的function.php文件中。测试和工作。
2) 将数据插入wordpress数据库以外的其他数据库(未测试):
您应该完成以下代码以使dabase连接到外部数据库并插入数据…记住
$string
未定义。代码放在活动子主题(或活动主题)的function.php文件中。