在 Wordpress 中为每个新 post 自动创建一个新的 Mailchimp 邮件列表 (Mailchimp API 3.0+)

Automatically create a new Mailchimp mailing list for each new post in Wordpress (Mailchimp API 3.0+)

要求:

  1. 创建新的 post 时,会在 Mailchimp
  2. 中创建一个新的邮件列表
  3. 在 Mailchimp 中创建新邮件列表时,列表 ID 存储在 post 的元数据中
  4. 查看post时,唯一的邮件列表ID用于在页面上创建邮件列表订阅表单

问题:

  1. 每次创建新的 post 并且仅在创建(未更新)时用于 运行 函数的最佳 WP 挂钩是什么? ( 推荐 transition_post_status 挂钩。)
  2. Mailchimp API 用于创建新的邮件列表。有开源包装器class吗?
  3. 存储唯一邮件列表列表 ID 以便将其存储在 post 的元数据中的最佳方法是什么? add_post_meta()?

我的解决方案,使用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);