Tại sao không thể resubcribe qua api của mailchimp? Vâng mình đã gặp phải tình trạng này, sau khi tìm hiểu thì mình mới biết, mailchimp họ tôn quyết định unsubscribed vì vậy không cho các nhà phát triển resubscribe lại thông qua API, tuy nhiên họ vẫn đưa ra giải pháp đó là có thể gửi email để họ confirm việc resubscibe lại và sau đây mình xin chia sẽ một số code để xử lý việc này
Điều này là hữu ích để kiểm tra xem liệu subscriber đã có trong list hay chưa
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
//trả về các trạng thái subscribed, unsubscribed, "notfound" function check_subscriber_status($list_id, $email){ //nhớ path cho đúng với include thư viện api require_once PATH.'/vendor/autoload.php'; $client = new MailchimpMarketing\ApiClient(); $client->setConfig(array( //api của bạn 'apiKey' => 'Your api key', 'server' => 'Your server', )); try{ $response = $client->lists->getListMember($list_id, $email); return $response->status; }catch (GuzzleHttp\Exception\ClientException $e) { return "notfound"; } } |
Resubscribe ở đây được thực hiện bằng cách set status tới pending và mailchimp sẽ tự động gửi một email tới subscriber để họ confirm việc resubscribe
Nhớ đọc các comment để thay đổi các thông số nhé bạn
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
//$data là array từ form chứa các field như email, first_name function add_subscriber_to_mailchimp($data){ require_once YOURPATH.'includes/mailchimp-api/vendor/autoload.php'; $client = new MailchimpMarketing\ApiClient(); $client->setConfig(array( 'apiKey' => 'Your api key', 'server' => 'Your server', )); $list_id = 'Your lis id'; //function này ở trên nhé $subscriber_status = check_subscriber_status($list_id, $data['email']); if($subscriber_status == "notfound"){ try { $response = $client->lists->addListMember($list_id, array( "email_address" => $data['email'], "status" => "subscribed", "merge_fields" => array( "FNAME" => $data['first_name'] ) ) ); }catch (GuzzleHttp\Exception\ClientException $e) { } }elseif($subscriber_status == "unsubscribed"){ try { $response = $client->lists->setListMember($list_id, $data['email'], array( "email_address" => $data['email'], "status_if_new" => "unsubscribed", "status" => "pending", ) ); }catch (GuzzleHttp\Exception\ClientException $e) { //Không làm gì cả } } //return; } |
Mọi sự sao chép xin ghi rõ nguồn là fcwordpress.net
Chuyên trang về wordpress: hướng dẫn thiết kế theme, plugin, thủ thuật wordpress