自动为Wordpress中的每个新帖子创建一个新的Mailchimp邮件列表(M​​ailchimp API 3.0 +)

时间:2018-01-16 22:51:32

标签: php wordpress mailchimp mailchimp-api-v3.0

我博客上的每个帖子都是一个事件,我需要为创建帖子时生成的每个事件创建一个新的邮件列表,以便用户可以订阅该事件的更新邮件列表。我非常接近但只需要一些指示。

目标:

  1. 创建新帖子时,会在Mailchimp中创建新的邮件列表,并将列表ID存储为帖子元数据
  2. 查看帖子时,会检索唯一邮件列表ID并将其用于表单以供用户订阅该列表
  3. 问题:

    1. 什么是最好的WP钩子来保证我的"创建列表"每次创建新帖子时都会运行函数,并且仅在创建(未更新)时运行? (This SO post建议transition_post_status挂钩。)
    2. 是否有一个方便的开源包装类用于Mailchimp的API,你建议处理创建新列表?
    3. 存储列表ID的最佳方式是什么,以便将其附加到唯一帖子? add_post_meta()

1 个答案:

答案 0 :(得分:0)

我的解决方案,使用DrewM's Mailchimp API wrapper

<?php
use \DrewM\MailChimp\MailChimp;
function so_48291110_new_mailchimp_list_on_publish( $new_status, $old_status, $post ) {
    // The first time our new post is published
    if ( $new_status == 'publish' && $old_status != 'publish' ) {
        // Mailchimp API instance
        $MailChimp = new MailChimp('My Mailchimip API Key');
        // Mailchimp Mailing List info
        $mailchimp_new_list_data = array(
            "name"             => "Mailing list for {$post->post_title}",
            "contact"          => array(
                "company" => "My company",
                /* ... */
            ),
            "campaign_defaults" => array(
                "from_name" => "My name",
                /* ... */
            ),
            /* ... */
        );
        // Create new mailing list
        $mailchimp_result = $MailChimp->post("lists", $mailchimp_new_list_data);
        // Store mailing list ID as metadata
        add_post_meta(
            get_the_id(),            // post ID
            'mailchimp_list_id',     // meta key
            $mailchimp_result["id"], // meta value
            true                     // unique
        );
    }
}

// Add action
add_action('transition_post_status', 'so_48291110_new_mailchimp_list_on_publish', 10, 3);