Как добавить тег в список участников на Mailchimp? - PullRequest
0 голосов
/ 18 февраля 2019

Я хочу добавить тег для определенного пользователя в списке mailchimp

$email = "toto@example.com";
$tag="test";
$userid = md5( strtolower( $email ) );


$data = array(
    'apikey'        => $mailchimp_api_key,
    'email_address' => $email,
    'tags' => array(
        'name' => $tag,
        'status' => 'active'
        )
    );

$json_data = json_encode($data);

$url = 'https://'.$mailchimp_datacenter.'api.mailchimp.com/3.0/lists/'.$mailchimp_list_id.'/members/' . $userid . '/tags';


$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json',
    'Authorization: Basic '.$auth));
curl_setopt($ch, CURLOPT_USERAGENT, 'PHP-MCAPI/2.0');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
if ($displaytaglist!="") {
    curl_setopt($ch, CURLOPT_POST, true);   
    curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);
}
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$result = curl_exec($ch);

Знаете ли вы, в чем проблема?У меня есть это возвращение:

stdClass Object
(
    [type] => http://developer.mailchimp.com/documentation/mailchimp/guides/error-glossary/
    [title] => Invalid Resource
    [status] => 400
    [detail] => Expected argument of type "array or Traversable and ArrayAccess", "string" given
    [instance] => XXXXX-XXXXX-XXXXX
)

Ответы [ 2 ]

0 голосов
/ 21 мая 2019

Мне пришлось использовать вложенный массив для работы тегов:

$data = array(
  'tags' => array(
    array(
      'name' => $tagname,
      'status' => 'active' 
    )
  )
);

Без вложенного массива (массив ('name' => $ tagname, 'status' => 'active'))MailChimp возвращает следующее сообщение об ошибке:

«Неверный ресурс», 400, «Ожидаемый аргумент типа« массив или Traversable and ArrayAccess »,« строка », заданная«

. Можно установить несколько тегов.путь:

$data = array(
  'tags' => array(
    array(
      'name' => $tagname1,
      'status' => 'active' 
    ),
    array(
      'name' => $tagname2,
      'status' => 'active' 
    )
  )
);
0 голосов
/ 12 апреля 2019
// Tags should be passed as multidimensional array. Replace your data variable with this and it will work. No need to pass email & apikey in data variable. Tested.

$data = array(
    'tags' => array(
        array(
            'name' => $tag,
            'status' => 'active'
        )
    )
);
...