【问题标题】:How to check if email address entered in an input field exists in mailchimp list如何检查输入字段中输入的电子邮件地址是否存在于mailchimp列表中
【发布时间】:2014-05-06 15:15:19
【问题描述】:

想知道是否有人可以帮助我。我正在为客户设计一个 wordpress 网站,我需要一些帮助。我已经安装了 Woocommerce 2.1.6 并且想知道如何编写一个 php 脚本,当用户进入单个产品页面时,它不会给出默认的“添加到购物车”按钮,而是显示一个输入字段和一个提交按钮。然后我希望 php 脚本检查输入的电子邮件是否在我制作的 mailchimp '成员列表'中。

如果它存在于列表中,则会出现添加到购物车按钮并可以继续购买。如果没有,他们会看到一条消息,表明他们没有注册会员等。

谢谢大家。

【问题讨论】:

标签: php wordpress woocommerce mailchimp


【解决方案1】:

一个合理的方法是使用 mailchimp 的 REST api。您正在寻找的方法是listMemberInfo。 Mailchimp 为 api 提供了一个 PHP 包装器,您可以找到下载 here。安装包装器后,您将需要您的 api 密钥和您在帐户中找到的列表密钥。

当然你也可以 curl api 端点

https://<dc>.api.mailchimp.com/2.0/

您将 api 密钥、列表和电子邮件数据作为 json 编码数组发布的位置。

基本上,查询 api 的函数可能如下所示,例如,我们将 us2 作为适当的数据中心(您可以在 api 键中的破折号后找到它):

function queryMailChimp($email){
    $url = 'https://us2.api.mailchimp.com/2.0/lists/member-info.json';
    $arguments = json_encode(array('apikey'=>'your_api_key','id'=>'your_list_id','emails'=>array('email'=$email)));
    $contentType ='Content-Type: application/json';
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array($contentType));
    curl_setopt($ch, CURLOPT_HEADER, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $arguments);
    $response = curl_exec($ch);
    $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    $header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
    $header = substr($response, 0, $header_size);
    $body = substr($response, $header_size);
    curl_close($ch);
    return array('status' => $status, 'header' => $header, 'response' => json_decode($body, true), 'request'=>array('url'=>$url,'content'=>$contentType,'data'=>$arguments));
}

【讨论】:

  • 您好,抱歉,我对编写 Php 还很陌生,并且处于非常基础的水平。
  • 您实际上可以只复制和粘贴上面的功能,它应该可以直接使用,但是您必须在您的 MailChimp 帐户中找到您的数据。我们在生产中使用了这个函数,检查 'success_count' 值的响应以查看电子邮件是否已经注册。
  • 好的,那么我将如何使用它来检查在输入字段中输入的电子邮件地址是否存在于列表中
  • 这取决于您的设置,但我假设您想使用 ajax 来检查电子邮件地址。因此,如果单击该按钮,您将使用上述函数向 php 脚本发出 ajax 请求,在 jQuery 中我将使用jQuery.getJSON()。假设电子邮件文本字段值通过此调用作为email=me@example.com 提交,那么您将在您的php 脚本中使用echo queryMailChimp($_GET['email']); 在您的js 中,您将检查返回的响应对象的success_count。
  • 所以该函数将进入我的主题function.php?
【解决方案2】:

从 3.0 版开始,它位于 http://developer.mailchimp.com/documentation/mailchimp/reference/lists/members/#read-get_lists_list_id_members_subscriber_hash

其中subscriber_hash = 列表成员电子邮件地址的小写版本的MD5 哈希。

【讨论】:

    猜你喜欢
    • 2015-11-30
    • 2012-06-27
    • 1970-01-01
    • 2013-03-16
    • 1970-01-01
    • 2016-02-21
    • 2015-07-20
    • 2016-08-20
    • 2012-09-09
    相关资源
    最近更新 更多