【问题标题】:Store order total and customer email in a custom table in MySQL database将订单总额和客户电子邮件存储在 MySQL 数据库的自定义表中
【发布时间】:2018-07-05 01:48:39
【问题描述】:

我正在尝试从 woocommerce 的 functions.php 文件中的已完成结帐中提取数据。结帐后,我试图存储自定义生成的代码、生成订单的电子邮件以及订单的总金额。我无法从订单中提取任何数据,也未能成功找到任何相关文件。

结帐成功后必须拉取数据。

该表包含凭证代码(每笔交易生成的唯一代码)、用户电子邮件和订单总价列。结帐后,我找不到获取用户电子邮件和订单总额的方法。查询必须插入函数内生成的凭证 ID,应从订单详细信息中获取的电子邮件,设置为 0 的已兑换,以及应从订单详细信息中获取的值。

在 Woocommerce 结帐页面上,我有一个 内部服务器错误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 数据库的自定义表中?

【问题讨论】:

  • 你的实际问题是什么?
  • 在 woocommerce 结帐页面上,我不断收到内部服务器错误和 PHP 致命错误:在布尔值上调用成员函数 get_data()
  • 通过编辑您的帖子来澄清,而不是通过 cmets。请阅读minimal reproducible example并采取行动。

标签: php mysql wordpress woocommerce orders


【解决方案1】:

您的问题不是很清楚或不够详细。我们不知道您是否尝试将此数据添加到您的 Wordpress 数据库或其他数据库中的自定义表中。

如果您尝试在 wordpress 数据库的自定义表中插入数据,则应使用 WPDB Class(正如我在回答中使用的那样),否则应使用最后一个代码 sn-p。

$order_id 未定义,您的代码会引发错误。变量$string 未定义,如果它是索引列,它不会' t 需要出现(就像在下面的第一个代码 sn-p 中一样)。

您的目标似乎是“已完成”的订单。使用woocommerce_email_before_order_table 钩子将使您的代码在每个电子邮件通知中被多次触发。另外这个钩子真的不方便触发任何数据库更改。

当订单状态为“完成”时,将触发以下代码。所以有2种情况:

1) 在 Wordpress 数据库中代理自定义表格:

add_action( 'woocommerce_order_status_completed', 'generate_code_on_order_complete', 20, 2 );
function generate_code_on_order_complete( $order_id, $order ){
    global $wpdb;

    $billing_email = $order->get_billing_email(); // Billing email
    $total_tax     = $order->get_total_tax();     // Billing email

    $wpdb->query("
        INSERT INTO test_vouchers (email, redeemed, value)
        VALUES ('$billing_email','0','$total_tax');
    ");
}

代码进入活动子主题(或活动主题)的 function.php 文件中。经过测试和工作。


2) 将数据插入到 Wordpress 以外的另一个数据库(未经测试):

您应该完成以下代码以使数据库连接到您的外部数据库并插入数据……请记住,$string 未定义。

add_action( 'woocommerce_order_status_completed', 'generate_code_on_order_complete', 20, 2 );
function generate_code_on_order_complete( $order_id, $order ){

    $billing_email = $order->get_billing_email(); // Billing email
    $total_tax     = $order->get_total_tax();     // Billing email

    ## To be completed by you (below) ##

    $connection = DBLogin();

    $query = "INSERT INTO test_vouchers (voucher_id, email, redeemed, value) VALUES ('$string','$billing_email','0','$total_tax')";
}

代码进入活动子主题(或活动主题)的 function.php 文件中。

【讨论】:

    猜你喜欢
    • 2021-04-11
    • 1970-01-01
    • 2011-09-26
    • 1970-01-01
    • 1970-01-01
    • 2016-03-03
    • 2015-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多