PHP の超シンプルで最小限の抽象化 MailChimp API v3 ラッパー。
私は複雑なラッパーが嫌いです。これにより、MailChimp API ドキュメントからできるだけ直接コードにアクセスできるようになります。
PHP 5.3 とパルスが必要です。抽象化はチンパンジーのためにある。
Composer を使用して mailchimp-api をインストールできます。
composer require drewm/mailchimp-api
次に、次のことを行う必要があります。
composer install
実行して、これらの依存関係をベンダー ディレクトリに追加します。
次の行を使用してオートローダーをアプリケーションに追加します: require("vendor/autoload.php")
あるいは、 MailChimp.php
ファイルをダウンロードして手動で含めることもできます。
include('./MailChimp.php');
バッチ リクエストまたは Webhook インターフェイスを使用したい場合は、 Batch.php
またはWebhook.php
ファイルをダウンロードして含める必要もあります。
include('./Batch.php'); include('./Webhook.php');
これらはオプションです。バッチや Webhook を使用していない場合は、それらをスキップできます。後でいつでも戻って追加できます。
まずはクラスをuse
、API キーを使用してインスタンスを作成します
DrewMMailChimpを使用MailChimp;$MailChimp = new MailChimp('abc123abc123abc123abc123abc123-us1');
次に、すべてのメーリング リストをリストします ( get
on the lists
メソッドを使用)。
$result = $MailChimp->get('lists');print_r($result);
誰かをリストに登録します ( lists/{listID}/members
メソッドへのpost
を使用):
$list_id = 'b1234346';$result = $MailChimp->post("lists/$list_id/members", [ 'email_address' => '[email protected]', 'status' => 'subscribed', ]);print_r($result);
リストのメンバーを詳細情報で更新します ( patch
を使用して更新します)。
$list_id = 'b1234346';$subscriber_hash = MailChimp::subscriberHash('[email protected]');$result = $MailChimp->patch("lists/$list_id/members/$subscriber_hash", [ 'merge_fields' = > ['FNAME'=>'デイビー', 'LNAME'=>'ジョーンズ']、'興味' => ['2s3a384h' => true]、 ]);print_r($result);
delete
メソッドを使用してリストのメンバーを削除します。
$list_id = 'b1234346';$subscriber_hash = MailChimp::subscriberHash('[email protected]');$MailChimp->delete("lists/$list_id/members/$subscriber_hash");
success()
メソッドを使用して、アクションが成功したかどうかをすばやくテストします。
$list_id = 'b1234346';$result = $MailChimp->post("lists/$list_id/members", [ 'email_address' => '[email protected]', 'status' => 'subscribed', ]);if ($MailChimp->success()) { print_r($result); } else { echo $MailChimp->getLastError(); }
MailChimp バッチ操作機能を使用すると、1 回の呼び出しで複数の操作を完了できます。良い例は、リストに数千のメンバーを追加することです。これは、数千ではなく 1 つのリクエストで実行できます。
DrewMMailChimpMailChimp を使用します;DrewMMailChimpBatch を使用します;$MailChimp = new MailChimp('abc123abc123abc123abc123abc123-us1');$Batch = $MailChimp->new_batch();
その後、 MailChimp
オブジェクトで通常行うのと同じように、 Batch
オブジェクトに対してリクエストを行うことができます。違いは、最初の引数として操作の ID を設定する必要があることと、応答が得られないことです。この ID は、バッチ操作からの結合された応答内でこのリクエストの結果を見つけるために使用されます。
$Batch->post("op1", "lists/$list_id/members", [ 'email_address' => '[email protected]', 'status' => 'subscribed', ]);$Batch->post("op2", "lists/$list_id/members", [ 'email_address' => '[email protected]', 'status' => 'subscribed', ]);$Batch->post("op3", "lists/$list_id/members", [ 'email_address' => '[email protected]', 'status' => 'subscribed', ]);
バッチに含める必要があるすべてのリクエストが完了したら、それを実行する必要があります。
$result = $Batch->execute();
結果にはバッチ ID が含まれます。後で、バッチのステータスを確認できます。
$MailChimp->new_batch($batch_id);$result = $Batch->check_status();
バッチが完了したら、応答で指定された URL から結果をダウンロードできます。 JSON では、各操作の結果は、リクエストの最初の引数として使用した ID によってキー化されます。
注: Webhook 機能を使用するには、少なくとも PHP 5.4 が必要です。
MailChimp Webhook を使用すると、リストやキャンペーンの変更をコードに通知できます。
Webhook を設定するときは、データの送信先となるサーバー上の URL を指定します。このラッパーの Webhook クラスは、受信 Webhook をきちんとした方法でキャッチするのに役立ちます。これはサブスクリプション モデルを使用しており、コードはリッスンする Webhook イベントをサブスクライブします。 Webhook データが渡されるコールバック関数を提供します。
購読unsubscribe
Webhook をリッスンするには:
DrewMMailChimpWebhook を使用します。 Webhook::subscribe('unsubscribe', function($data){ print_r($data); });
一見すると、購読/購読解除は混乱しているように見えます。コードは、MailChimp unsubscribe
Webhook イベントを購読しています。コールバック関数は、Webhook データを含む連想配列という単一の引数として渡されます。
すべての Webhook をキャッチして自分で処理したい場合は、以下を使用できます。
DrewMMailChimpWebhook を使用します;$result = Webhook::receive();print_r($result);
Webhook データの内容に関するドキュメントはないようです。 Webhook を開発マシンにトンネリングするために ngrok などを使用すると便利です。その後、その Web インターフェイスを使用して、送信された内容を検査し、コードのデバッグ中に受信 Webhook を再生できます。
HTTP クライアントまたは API によって返された最後のエラーを取得するには、 getLastError()
を使用します。
echo $MailChimp->getLastError();
さらにデバッグするには、応答のヘッダーと本文を検査します。
print_r($MailChimp->getLastResponse());
データを間違った形式で送信していると思われる場合は、ラッパーによって MailChimp に送信された内容を確認できます。
print_r($MailChimp->getLastRequest());
サーバーの CA ルート証明書が最新でない場合、SSL 検証が失敗し、応答が得られないことがあります。この問題を修正する解決策は、SSL 検証を無効にすることではありません。解決策は、証明書を更新することです。それができない場合は、クラス ファイルの先頭にオプションがあります。少なくとも証明書の更新を試行せずに、単にスイッチをオフにしないでください。それは怠惰で危険です。あなたは怠惰で危険な開発者ではありませんね?
プロジェクトに関する実装に関する高レベルの質問がある場合 (「これを WordPress に追加するにはどうすればよいですか」、「電子メール アドレスを使用するフォームがあるのですが...」など) は、 StackOverflow などの場所に問い合わせてください。バグを見つけたと思われる場合、または変更や改善について話し合いたい場合は、お気軽に問題を提起してください。私たちとの間で解決させていただきます。
これはかなり単純なラッパーですが、使用しているユーザーの貢献によってさらに改良されました。改善を提案したい場合は、プルリクエストを行う前に問題を提起して議論してください。
バグのプル リクエストは大歓迎です。修正しようとしているバグについてメッセージで説明してください。
少数の PHPUnit 単体テストがあります。 API に対する単体テストは明らかに少し難しいですが、これに対する貢献を歓迎します。もっとテスト範囲が広がれば良いですね。