将国家代码发送到 MailChimp for Woocommerce

Posted

技术标签:

【中文标题】将国家代码发送到 MailChimp for Woocommerce【英文标题】:Send country code to MailChimp for Woocommerce 【发布时间】:2021-08-21 09:35:44 【问题描述】:

由于我们在 WooCommerce 商店中使用自定义结账,Woocommerce 的 Mailchimp 官方插件不会获取订单的某些详细信息。

我们需要从每个订单传递给 Mailchimp 的是 2 个字母的国家/地区代码,但由于某种原因我无法使其工作。

在我的一项测试中,我“让它工作”,因为它通过了 2 个字母的国家代码,但不是用于订单的国家代码,而是商店的代码,所以我知道我的大部分代码都在工作,但我不能弄清楚如何让它按预期工作:

一个是订阅的人:

function custom_mailchimp_sync_user_mergetags($merge_fields, $user) 
    /// add anything you would like to this array - and return it
    $merge_fields['COUNTRYCOD'] = $order->get_billing_country();
    mailchimp_log('trace', 'custom_fields', $merge_fields); 

    return $merge_fields;


add_filter('mailchimp_sync_user_mergetags', 'custom_mailchimp_sync_user_mergetags', 10, 2);

另外一个是给未订阅的人的:

function custom_mailchimp_sync_user_mergetags_no_sub($merge_fields, $user) 
    /// add anything you would like to this array - and return it
    $merge_fields['COUNTRYCOD'] = $order->get_billing_country();
    mailchimp_log('trace', 'custom_fields', $merge_fields); 

    return $merge_fields;


add_filter('mailchimp_get_ecommerce_merge_tags', 'custom_mailchimp_sync_user_mergetags_no_sub', 10, 2);

如果有任何帮助,我将不胜感激

【问题讨论】:

【参考方案1】:

您无权访问$order 对象,因此$order->get_billing_country(); 将不起作用。但是,您可以访问 $user 对象。

所以你得到:

// Allow users to hook into the merge field submission
function custom_mailchimp_sync_user_mergetags( $merge_fields_system, $user ) 
    // Get userID
    $user_id = $user->ID;

    // Get the WooCommerce customer object
    $customer = new WC_Customer( $user_id );
    
    // Add anything you would like to this array - and return it
    $merge_fields_system['COUNTRYCOD'] = $customer->get_billing_country() ? $customer->get_billing_country() : $customer->get_shipping_country();
    
    //mailchimp_log( 'trace', 'custom_fields', $merge_fields_system ); 

    return $merge_fields_system;

add_filter( 'mailchimp_sync_user_mergetags', 'custom_mailchimp_sync_user_mergetags', 10, 2 );

mailchimp_get_ecommerce_merge_tags 过滤器钩子确实包含 $order 对象作为第二个参数

function filter_mailchimp_get_ecommerce_merge_tags( $merge_fields, $order ) 
    // Do something    

    return $merge_fields;

add_filter( 'mailchimp_get_ecommerce_merge_tags', 'filter_mailchimp_get_ecommerce_merge_tags', 10, 2 );

【讨论】:

您好,感谢您的回答。这段时间我一直在尝试做一些测试,这就是为什么回复的时间有点长。我似乎无法使用您上面的代码向邮件黑猩猩发送国家代码。我设法能够发送一个字符串,例如 ES,但是一旦我使用 $customer->get_billing_country() 的变量,什么都不会发送。有什么想法吗? @AndresMolinaPerez-Tome 我已经更新了我的答案,如果get_billing_country() 为空,则将使用get_shipping_country()。如果这不能提供解决方案,您将不得不一步一步地debug,这样您就可以看到事情何时“出错”。问候

以上是关于将国家代码发送到 MailChimp for Woocommerce的主要内容,如果未能解决你的问题,请参考以下文章

使用现有表单将数据发送到 mailchimp,然后重定向

通过PHP将Mailchimp简报发送到List

Mailchimp 错误 400 请求,无法将用户发送到列表

将 Mailchimp 活动发送到特定电子邮件

如何使用带有mailchimp的python发送单个邮件

使用 Mailchimp 将个性化 RSS 发送到 EMAIL 活动