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

时间:2017-01-17 08:00:55

标签: php wordpress woocommerce hook action

我正在使用 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',这也会返回一个空值。

当我在日志中输出$ 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
        )

)

我可能使用了错误的动作钩子吗?数据库中存在的所有值。

3 个答案:

答案 0 :(得分:2)

将操作更改为

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

在创建帖子元数据后触发此操作,但' woocommerce_new_order'

的情况并非如此。

答案 1 :(得分:0)

尝试下面的teo hook,其中传递顺序id作为参数:

woocommerce_thankyou
woocommerce_payment_complete

答案 2 :(得分:0)

这为我解决了这个问题,我仍然使用“woocommerce_new_order”,但更改了优先级。 来自:

add_action('woocommerce_new_order', 'add_user_to_mailchimp');

致:

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

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