Я использую код PHP Curl для добавления нового подписчика в MailChimp. Он добавляет подписчика со всей информацией, но я не понимаю, как добавить теги с помощью того же вызова Curl. Я пробовал разными способами, но ничего не помогло. Пожалуйста, дайте мне знать, как я могу добавить теги к этому новому подписчику.






Согласно документации MailChimp, вам нужно использовать отдельный вызов для добавления тегов. https://developer.mailchimp.com/documentation/mailchimp/reference/lists/members/tags/ Обратите внимание, что в моем тестировании ответное сообщение было пустым, хотя тег был добавлен. Либо я что-то делаю не так, либо в API есть ошибка.
Мое решение для отправки тегов POST / lists / {list_id} / members / {subscriber_hash} / с помощью PHP - Надеюсь, это кому-то поможет, это свело меня с ума
Здесь используется класс-оболочка Drewm MailChimp v3.
https://github.com/drewm/mailchimp-api - который я понятия не имел, как настроить, поэтому вместо этого я установил этот подключаемый модуль
https://wordpress.org/plugins/nmedia-mailchimp-widget/ - который я никогда не использовал, но он успешно настраивает все, что вам нужно сделать, в ваш веб-сайт, как указано Drewm! 2 минуты
Я отредактировал 2.0 на 3.0 в /classes/mailchimp/Mailchimp.php в строке 23 на всякий случай.
общедоступный $ root = 'https://api.mailchimp.com/3.0';
ПРИМЕЧАНИЕ: list_id относится к ИДЕНТИФИКАТОРУ СПИСКА ПЛОЩАДЕЙ, а не к идентификатору, который вы видите в веб-интерфейсе.
ТАК, по сути, вам не нужно знать ID # для тега, обычная jane "thename" и устанавливать его как активный или неактивный
function add_tags() {
use \DrewM\MailChimp\MailChimp;
$MailChimp = new MailChimp('271afffe3a_myfancyid-us8');
$list_id='dsgf350h53'; // <--- PLAYGROUND LIST_ID
$hashed= md5('[email protected]');
$payload = array( 'tags' =>
array(
array('name' => 'upgraded', 'status' => 'active' ),
),
);
$result = $mailchimp->post( "lists/$list_id/members/$hashed/tags", $payload );
// this error success produces NOTHING in the Response from MailChimp
// because it doesn't seem to send anything, but if not error then success I guess
// so you can still capture its status
if ($MailChimp->success()) {
// do whatever
echo 'Success<br>';
print_r($result);
} else {
// do whatever
echo 'Error<br>';
print_r($result);
echo $MailChimp->getLastError();
}
} // end function
// set status as either active or inactive for add or remove
// so you can load this however you like to manage users throughout your site
Ах, массив внутри массива внутри массива. Глупо, что я упустил что-то ТАКОЕ очевидное, MailChimp. Спасибо за помощь, парень.
Меня это тоже зацепило, спасибо OP :)
Это рабочий пример регистрации пользователя в списке рассылки и добавления тегов:
$api_key = 'YOUR_API_KEY';
$list_id = 'YOUR_LIST_ID';
$email = 'USER_EMAIL';
/**
* Possible Values for Status:
* subscribed, unsubscribed, cleaned, pending, transactional
**/
$status = 'subscribed';
if ($email) {
$data = array(
'apikey' => $api_key,
'email_address' => $email,
'status' => $status,
'tags' => array('your tag name'),
'merge_fields' => array(
'FNAME' => $fname,
'LNAME' => $lname
)
);
// URL to request
$API_URL = 'https://' . substr($api_key,strpos($api_key,'-') + 1 ) . '.api.mailchimp.com/3.0/lists/' . $list_id . '/members/' . md5(strtolower($data['email_address']));
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $API_URL);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Authorization: Basic '.base64_encode( 'user:'.$api_key )));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data) );
$result = curl_exec($ch);
curl_close($ch);
$response = json_decode($result);
}
SSL verify=false очень умный.
не уверен, почему он проголосовал против, но это рабочий пример.
У меня не сработало - вернувшийся пользователь не имеет прикрепленных тегов.
+1: 10 часов спустя это решение, наконец, помогло мне добавить теги при добавлении подписчика. По какой-то причине API POST / lists / {list_id} / members НЕ указывает, как создать тег. Если я вам нравлюсь (пробовали 10 различных типов массивов "name": "tag name", "status": "inactive" .... Тогда это, безусловно, может вам помочь.
да, но есть еще поле тегов при создании участников mailchimp.com/developer/reference/lists/list-members