woocommerce_new_order 操作未返回所有订单详细信息

woocommerce_new_order action not returning all order details

我正在使用 woocommerce_new_order 操作将订单详细信息发送到 Mailchimp 列表。

// Add user to mailchimp list
function add_user_to_mailchimp($order_id) {
    $order = get_post_meta($order_id);

    write_log($order);

}
add_action( 'woocommerce_new_order', 'add_user_to_mailchimp', 1, 1 );

要记住的一个重要部分是用户不一定要注册帐户。

最重要的部分是检索客户的电子邮件并将其发送给 Mailchimp。我想通过使用

来实现
get_post_meta($order_id, 'billing_email', true);

但是即使我使用“_billing_email”,这个 returns 也是一个空值。

当我在日志中输出 $order 时,我得到以下输出:

[17-Jan-2017 07:47:35 UTC] Array
(
     [_wc_customer_order_csv_export_is_exported] => Array
        (
            [0] => 0
        )

    [_wc_customer_order_csv_export_customer_is_exported] => Array
        (
            [0] => 0
        )

    [_order_key] => Array
        (
            [0] => wc_order_587dcc17ca5f0
        )

    [_order_currency] => Array
        (
            [0] => ZAR
        )

    [_prices_include_tax] => Array
        (
            [0] => yes
        )

    [_customer_ip_address] => Array
        (
            [0] => ::1
        )

    [_customer_user_agent] => Array
        (
            [0] => Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:50.0) Gecko/20100101 Firefox/50.0
        )

    [_customer_user] => Array
        (
            [0] => 0
        )

    [_created_via] => Array
        (
            [0] => checkout
        )

    [_cart_hash] => Array
        (
            [0] => 4457fd575a37c07e4863ce5610ddb4d2
        )

    [_order_version] => Array
        (
            [0] => 2.6.4
        )

)

我是否使用了错误的动作挂钩?数据库中存在的所有值。

将操作更改为

add_action( 'woocommerce_checkout_update_order_meta', 'add_user_to_mailchimp', 1, 1 );

此操作在创建 post 元数据后触发,而 'woocommerce_new_order' 并非如此。

尝试下面的 teo 挂钩,其中传递订单 ID 作为参数:

woocommerce_thankyou
woocommerce_payment_complete

这为我修复了它,我仍然使用 'woocommerce_new_order' 但更改了优先级。 来自:

add_action('woocommerce_new_order', 'add_user_to_mailchimp');

收件人:

add_action('woocommerce_new_order', 'add_user_to_mailchimp', 1000, 2);

如果这不起作用,您可以尝试提高优先级。