woocommerce_new_order action not returning all order details

扶醉桌前 提交于 2021-01-27 18:47:06

问题


I'm using the woocommerce_new_order action to send order details to a Mailchimp list.

// 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 );

An important part to keep in mind is that the user may not necessarily register an account.

The most important part is retrieving the the customers email and sending that through to Mailchimp. I want to achieve this by using

get_post_meta($order_id, 'billing_email', true);

but this returns an empty value even if I use '_billing_email'.

When I output the $order in the log I get the following output:

[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
        )

)

Am I perhaps using the wrong action hook? All the values to exist in the database.


回答1:


Changed the action to

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

This action fires after the post meta is created, which wasn't the case with 'woocommerce_new_order'.




回答2:


Try below teo hook in which pass order id as argument:

woocommerce_thankyou
woocommerce_payment_complete


来源:https://stackoverflow.com/questions/41691777/woocommerce-new-order-action-not-returning-all-order-details

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!