Mailchimp Wordpress插件

我已经构建了此Mailchimp新闻订阅注册插件。 PHP不是我的强项,所以我无法修复它的错误。

我使用了此Mailchimp包装器:https://github.com/drewm/mailchimp-api

我的PHP文件是:

<?php

include('MailChimp.php');  // path to API wrapper downloaded from GitHub
use \DrewM\MailChimp\MailChimp;

function sm_mailchimp_subscribe()
{

    // Settings:
    $mcAPIKey = '70000000000000000007e-us00';
    $mcListID = '323231214212';
    $status = 'subscribed';
    // Settings End

    $MailChimp = new MailChimp($mcAPIKey);

    $email = $_POST['email'];
    $fname = $_POST['fname'];
    $sname = $_POST['sname'];
    $merge_vars = array(
        'FNAME' => $fname,'LNAME' => $sname
    );

    if (isset($email) and isset($fname) and isset($sname)) {
        $result = $MailChimp->post("lists/" . $mcListID . "/members",[
            'email_address' => $email,'merge_fields'  => $merge_vars,'status'        => $status,]);

        return json_encode($result);
    }
}

if ($_POST['ajax']) {
    echo sm_mailchimp_subscribe();
} elseif ($_POST['action'] == 'setCookies') {
    echo setCookiesTemp();
}


function setCookiesTemp()
{
    setcookie('sm_mailchimp-temp',true,time() + (86400 * 28),'/');
}
function setCookiesPerm()
{
    setcookie('sm_mailchimp-perm',time() + (86400 * 28 * 24),'/');
}


这是JS:

jQuery(function($) {
  // From wp_localized
  const ajaxURL = ajax_obj.ajax_url;

  $(document).ready(function() {
    var body = $("body");
    var modal = `<div class="sm_mailchimp-modal">
                    <div class="sm_mailchimp-box">
                      <button class="sm_mailchimp-close">X</button>
                        <h3>Join Our Mailing List</h3>
                        <form name="sm_mailchimp-form" method="post" class="sm_mailchimp-form light">
                           <p>Subscribe to our newsletter and receive tips for a successful business.</p>
                            <input type="email" name="email" placeholder="Type Your Email" class="sm_sname">
                            <div class="sm_mailchimp-message"></div>
                            <button type="submit">SIGN UP</button>
                        </form>
                    </div>
                </div>`;

    if (!document.cookie.includes("sm_mailchimp-temp=1")) {
      $(modal)
        .hide()
        .appendTo(body);
      setTimeout(function() {
        $(".sm_mailchimp-modal").fadeIn();
      },5000);
    }

    $(".sm_mailchimp-close").click(function() {
      closeModal();
    });

    $(".sm_mailchimp-modal").click(function(e) {
      if (e.target == this) {
        closeModal();
      }
    });

    function closeModal() {
      $(".sm_mailchimp-modal").fadeOut();

      $.ajax({
        url: ajaxURL,method: "POST",data: { action: "setCookies" },success: function(data) {
          console.log("Cookie added as sm_mailchimp-temp=1");
        }
      });
    }

    $(".sm_mailchimp-form").submit(function() {
      var emailVal,fnameVal,snameVal;
      emailVal = $(".sm_email",this).val();
      fnameVal = $(".sm_fname",this).val();
      snameVal = $(".sm_sname",this).val();

      if (emailVal === "" || fnameVal === "" || snameVal === "") {
        $(".sm_mailchimp-message").html("Please fill out all the fields!");
        return false;
      } else {
        $(".sm_mailchimp-message").html("Adding your email address...");

        var form = $(this);
        $.ajax({
          url: ajaxURL,type: "POST",data: form.serialize() + "&ajax=true",success: function(msg) {
            var message = $.parseJSON(msg),result = "";
            if (message.status === "pending") {
              result =
                "Success!  Please click the confirmation link that will be emailed to you shortly.";
            } else if (message.status === "subscribed") {
              result =
                "Success!  You have been subscribed to our mailing list.";
            } else {
              result = "Oops: " + message.title;
              console.log("Error: ",message);
            }
            $(".sm_mailchimp-message").html(result);
          }
        });
        return false;
      }
    });
  });
});

错误如下:

单击“注册”按钮后,应显示“正在添加您的电子邮件地址...”消息,但该消息在那里冻结。控制台显示以下错误:

Mailchimp Wordpress插件

很奇怪,它过去可以正常工作。而且没有改变,它就停止了。我是几个月前建造的。


更新

错误实际上来自success: function(msg) {行。 msg为空。因此,当到达message.status时,它无法读取状态为null的属性。

问题:为什么成功回调返回msg为空?

Mailchimp Wordpress插件

djxzh0 回答:Mailchimp Wordpress插件

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2737974.html

大家都在问