将国家代码发送到 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的主要内容,如果未能解决你的问题,请参考以下文章