首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我想在不使用插件的情况下将mailchimp与wordpress集成

我想在不使用插件的情况下将mailchimp与wordpress集成
EN

Stack Overflow用户
提问于 2017-04-18 06:33:03
回答 3查看 2.7K关注 0票数 2

我在我的form.But之后使用了这个条目,我的条目没有进入mailchimp帐户。如果有什么遗漏请告诉我。请参考以下代码。

代码语言:javascript
复制
<?php

// SUBSCRIBE TO MAILING LIST OPTION - ADD TO MAILCHIMP USING API
if ($_POST['emailUpdates'] == 'Yes')
{
    // Include Mailchimp API class
    require_once('MCAPI.class.php');

    // Your API Key: http://admin.mailchimp.com/account/api/
    $api = new MCAPI('xxxxxxxxx-us15');

    // Your List Unique ID: http://admin.mailchimp.com/lists/ (Click "settings")
    $list_id = "xxxxxxx";

    // Variables in your form that match up to variables on your subscriber
    // list. You might have only a single 'name' field, no fields at all, or more
    // fields that you want to sync up.
    $merge_vars = array(
        'FNAME' => $_POST['signup_first_name'],
        'LNAME' => $_POST['signup_last_name']
    );

    // SUBSCRIBE TO LIST
    if ($api->listSubscribe($list_id, $_POST['signup_user_email'], $merge_vars) === true)
    {
        $mailchimp_result = 'Success! Check your email to confirm sign up.';
    }
    else
    {
        $mailchimp_result = 'Error: ' . $api->errorMessage;
    }
}

?>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-04-18 08:50:22

不使用sdk类集成mailchimp表单

代码语言:javascript
复制
 $email= $_POST["email"];

$api_key = "dsfdfdsfdsdsfsfdgdfg-us15"; //api key
$list_id = "2f35dfgdgffec5c2"; // list id


  $url = 'https://us15.api.mailchimp.com/2.0/lists/subscribe.json?apikey='.$api_key.'&id='.$list_id.'&email[email]='.$email.'&double_optin=false&send_welcome=false';
echo callMailchimp($url);
function callMailchimp($url)
{
    $ch = curl_init();
    curl_setopt_array($ch, array(
        CURLOPT_URL => $url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_SSL_VERIFYHOST => 2
    ));

    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}

https://www.quora.com/How-do-I-use-PHP-cURL-to-access-the-new-MailChimp-API-v3-0

票数 0
EN

Stack Overflow用户

发布于 2017-04-18 08:44:28

尝试用单引号添加列表id --这是我在表单中使用的示例

代码语言:javascript
复制
<?php
    require_once 'inc/MCAPI.class.php';
    $api = new MCAPI('xxxxxxxxxxx-us15');
    $merge_vars = array('FNAME'=>$_POST["fname"], 'LNAME'=>$_POST["lname"]);

    // Submit subscriber data to MailChimp
    // For parameters doc, refer to: http://apidocs.mailchimp.com/api/1.3/listsubscribe.func.php
    $retval = $api->listSubscribe( 'xxxxx', $_POST["email"], $merge_vars, 'html', false, true );

    if ($api->errorCode){
        echo "<h4>Please try again.</h4>";
    } else {
        echo "<h4>Thank you, you have been added to our mailing list.</h4>";
    }
?>
票数 0
EN

Stack Overflow用户

发布于 2017-04-18 09:18:13

这是我在我的一个项目中使用的代码,我更改了一些细节,如id和api_key,因为您可以看到我为此做了自定义的短代码,而且您还将看到用户的位置,他们从那里通过IP填充表单。

mail_chimp_form

代码语言:javascript
复制
<?php 
/*-------------------------------------------------------------------------------
    MAIL CHIMP API
-------------------------------------------------------------------------------*/

function rudr_mch_subscribe() {
    $list_id = 'XXXXX';
    $api_key = 'XXXXXXXX-us15';
    $ip = $_SERVER['REMOTE_ADDR'];
   $details = json_decode(file_get_contents("http://ipinfo.io/{$ip}/json"));
    $cnt=$details->country; 
    $result = json_decode(rudr_mailchimp_subscriber_status($_POST['email'], 'subscribed', $list_id, $api_key, array('FNAME' => $firstname, 'LNAME' => $lastname),array('country_code'=>'".$cnt."')));
    // print_r($result);
            if ($resul->status == 400) {
                foreach ($result->errors as $error) {
                    echo '<p>Error: ' . $error->message . '</p>';
                }
            } elseif ($result->status == 'subscribed') {
                echo 'Thanks for Subscribing!';
            }
            die;
        }
add_action('wp_ajax_mailchimpsubscribe', 'rudr_mch_subscribe');
add_action('wp_ajax_nopriv_mailchimpsubscribe', 'rudr_mch_subscribe');
function rudr_mailchimp_subscriber_status( $email, $status, $list_id, $api_key, $merge_fields = array('FNAME' => '','LNAME' => ''),$location=array('country_code'=>'') ){
       function getUserIP()
    {
        $client  = @$_SERVER['HTTP_CLIENT_IP'];
        $forward = @$_SERVER['HTTP_X_FORWARDED_FOR'];
        $remote  = $_SERVER['REMOTE_ADDR'];

        if(filter_var($client, FILTER_VALIDATE_IP))
        {
            $ip = $client;
        }
        elseif(filter_var($forward, FILTER_VALIDATE_IP))
        {
            $ip = $forward;
        }
        else
        {
            $ip = $remote;
        }

        return $ip;
    } 
    $ipAddr = getUserIP();
    $geoIP  = json_decode(file_get_contents("http://freegeoip.net/json/$ipAddr"), true);
    $lati=$geoIP['latitude'];
    $long=$geoIP['longitude'];
    $ip = $_SERVER['REMOTE_ADDR'];
    $details = json_decode(file_get_contents("http://ipinfo.io/{$ip}/json"));
    $cnt=$details->country;
    $data = array(
        'apikey'        => $api_key,
        'email_address' => $email,
        'status'        => $status,
        'merge_fields' =>$merge_fields,
        'location' =>array(
               'latitude' =>$lati,
                'longitude' => $long,
                'country_code'=>$cnt
          ) 
    );
    $mch_api = curl_init(); // initialize cURL connection

    curl_setopt($mch_api, CURLOPT_URL, 'https://' . substr($api_key,strpos($api_key,'-')+1) . '.api.mailchimp.com/3.0/lists/' . $list_id . '/members/' . md5(strtolower($data['email_address'])));
    curl_setopt($mch_api, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Authorization: Basic '.base64_encode( 'user:'.$api_key )));
    curl_setopt($mch_api, CURLOPT_USERAGENT, 'PHP-MCAPI/2.0');
    curl_setopt($mch_api, CURLOPT_RETURNTRANSFER, true); // return the API response
    curl_setopt($mch_api, CURLOPT_CUSTOMREQUEST, 'PUT'); // method PUT
    curl_setopt($mch_api, CURLOPT_TIMEOUT, 10);
    curl_setopt($mch_api, CURLOPT_POST, true);
    curl_setopt($mch_api, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($mch_api, CURLOPT_POSTFIELDS, json_encode($data) ); // send data in json

    $result = curl_exec($mch_api);
    return $result;
}
function mail_chimp_code(){
 $current_user = wp_get_current_user();

?>
 <div class="chimpform">
   <div class="chimpform_inenr">
<form action="<?php echo site_url() ?>/wp-admin/admin-ajax.php" id="mailchimp">
    <!-- for my website the site_url() function returns https://rudrastyh.com -->
    <input type="text" name="fname" placeholder="First name" style="display:none;" />
    <input type="text" name="lname" placeholder="Last name" style="display:none;" />
    <input type="email" name="email" id="mce-EMAIL" value="<?php echo $current_user->user_email ?>" placeholder="Your email address" required/>

    <input type="hidden" name="action" value="mailchimpsubscribe" />
    <!-- we need action parameter to receive ajax request in WordPress -->

    <div class="mail_left"><button>YES! I WANT TO IMPROVE MY CAREER</button></div>
    <div class="mail_right"><button class="pum-close popmake-close" type="button"/>NO THANKS, I DON'T WANT ANY HELP</button></div>
  </form>
   <p class="status"></p>
  </div>
</div>
<script>
jQuery(function($){
    $('#mailchimp').submit(function(){
        var mailchimpform = $(this);
        $.ajax({ 
            url:mailchimpform.attr('action'),
            type:'POST',
            data:mailchimpform.serialize(), 
            success:function(data){
                  $('#mailchimp').hide();
                 $('p.status').text(data);
                document.getElementById("mailchimp").reset();
            }
        });
        return false;
    });
});
</script>

<?php
}// End some_random_code()
add_shortcode( 'mail_chimp_form', 'mail_chimp_code' );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43465166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档