MailPoetの「最新コンテンツ」ブロックをフィルターで整える。カスタム投稿の通知メールを自然な文章にする方法

はじめに

MailPoetの「Latest Post Notification」は、WordPressの記事公開に合わせてメールを送れる便利な機能です。
ただ、カスタム投稿タイプで使うと、Automatic Latest Content ブロックの表示が少し硬く感じることがあります。

たとえば、アルバム用のカスタム投稿を公開したときに、

アルバムタイトル
投稿を読む

ではなく、

「アルバムタイトル」のアルバムを追加しました。
アルバムを確認する

のように見せたいケースです。

この記事では、MailPoet公式のフィルター mailpoet_automated_latest_content_post を使って、Automatic Latest Content ブロックに表示されるタイトルや本文をカスタマイズする方法を紹介します。

MailPoetのPost Notificationとは

MailPoetには、投稿が公開されたタイミングで購読者へ自動送信できる「Post Notification」機能があります。

管理画面からメールを作成し、送信タイミングを「投稿が公開された直後」「毎日」「毎週」などに設定できます。
カスタム投稿タイプを使っているサイトでも、MailPoet側で対象として扱えれば、投稿公開をきっかけに通知メールを送れます。

ただし、Post Notification メールでは Automatic Latest Content ブロックが重要です。MailPoet公式ドキュメントでも、Post Notification メールにはこのブロックを含める必要があると説明されています。

このブロックは便利な一方で、表示の自由度には限界があります。
特に次のような調整は、エディタ上だけでは難しいことがあります。

  • 投稿タイトルを文章の一部として表示したい
  • 抜粋文を通知メール向けに差し替えたい
  • 「続きを読む」「投稿を読む」の見せ方を変えたい
  • カスタム投稿の詳細ページではなく、一覧ページへ誘導したい

そこで使えるのが、MailPoetの開発者向けフィルターです。

基本の使い方

MailPoetには mailpoet_automated_latest_content_post というフィルターがあります。

これは、Automatic Latest Content ブロックが投稿データをメール用ブロックへ変換する前に、投稿データを加工できるフィルターです。

公式ドキュメントでは、このフィルターは3つの値を受け取ると説明されています。

  • 変更用に複製された WP_Post オブジェクト
  • 元の未変更の WP_Post オブジェクト
  • ブロック設定の配列

戻り値は WP_Post オブジェクトにする必要があります。
つまり、元の投稿そのものを書き換えるのではなく、メール表示用に渡される投稿データだけを整えるイメージです。

たとえば、カスタム投稿タイプ album の通知だけ、タイトルと抜粋を差し替えるなら次のように書けます。

PHP
add_filter('mailpoet_automated_latest_content_post', function ($post, $original_post, $block) {
    if (!$original_post instanceof WP_Post || $original_post->post_type !== 'album') {
        return $post;
    }

    $album_title = wp_strip_all_tags(get_the_title($original_post));

    $post->post_title = 'アルバムが更新されました';
    $post->post_excerpt = sprintf(
        '「%s」のアルバムを追加しました。最新の写真をアルバム一覧からご覧ください。',
        esc_html($album_title)
    );
    $post->post_content = $post->post_excerpt;

    return $post;
}, 10, 3);

このコードを入れると、MailPoetのAutomatic Latest Contentブロック内で、元の投稿タイトルをそのまま出すのではなく、通知メール向けの文章に整えられます。

MailPoet側の設定

コードだけで完結するわけではなく、MailPoetのブロック設定も合わせて調整します。

おすすめの設定は次のような形です。

  • 対象の投稿タイプ: アルバム
  • 表示件数: 1
  • タイトル表示: 有効
  • タイトルの配置: 中央
  • リンクとしてのタイトル: いいえ
  • 著者表示: いいえ
  • カテゴリ表示: いいえ
  • 仕切り線: いいえ
  • 「続きを読む」: ボタン
  • ボタン文言: アルバムを確認する

これで、Automatic Latest Contentブロックを「投稿一覧パーツ」ではなく、「通知メール用の本文ブロック」に近い見た目へ寄せられます。

便利な使いどころ

このフィルターが便利なのは、WordPress上の投稿タイトルと、メールで見せたい文章が違う場合です。

たとえばサイト上では、

20266月 イベントアルバム

というタイトルにしていても、メールでは次のように見せたいことがあります。

アルバムが更新されました

「2026年6月 イベントアルバム」のアルバムを追加しました。
最新の写真をアルバム一覧からご覧ください。

投稿タイトルをそのままメール見出しにすると少し唐突ですが、フィルターで整えると、メールとして自然な流れになります。

また、カスタム投稿タイプごとに文言を変えることもできます。

PHP
add_filter('mailpoet_automated_latest_content_post', function ($post, $original_post, $block) {
    if (!$original_post instanceof WP_Post) {
        return $post;
    }

    $title = wp_strip_all_tags(get_the_title($original_post));

    if ($original_post->post_type === 'album') {
        $post->post_title = 'アルバムが更新されました';
        $post->post_excerpt = sprintf('「%s」のアルバムを追加しました。', esc_html($title));
        $post->post_content = $post->post_excerpt;
    }

    if ($original_post->post_type === 'news') {
        $post->post_title = 'お知らせを公開しました';
        $post->post_excerpt = sprintf('新しいお知らせ「%s」を公開しました。', esc_html($title));
        $post->post_content = $post->post_excerpt;
    }

    return $post;
}, 10, 3);

1つのフィルターで複数の投稿タイプに対応できるので、サイト内の通知メールを統一したトーンにしやすくなります。

応用コード

実際の案件では、メール本文を中央寄せにしたいこともあります。
メールHTMLでは外部CSSよりインラインスタイルの方が安定しやすいため、post_excerpt にシンプルなHTMLを入れる方法が使えます。

PHP
add_filter('mailpoet_automated_latest_content_post', function ($post, $original_post, $block) {
    if (!$original_post instanceof WP_Post || $original_post->post_type !== 'album') {
        return $post;
    }

    $album_title = wp_strip_all_tags(get_the_title($original_post));

    $post->post_title = 'アルバムが更新されました';
    $post->post_excerpt = sprintf(
        '<p style="text-align:center;margin:0;">「%s」のアルバムを追加しました。<br>最新の写真をアルバム一覧からご覧ください。</p>',
        esc_html($album_title)
    );
    $post->post_content = $post->post_excerpt;

    return $post;
}, 10, 3);

MailPoet側で短い説明文が表示される設定にしておくと、この post_excerpt がメール内に表示されます。

ただし、MailPoetのレンダリングやメールクライアントによって、HTMLやスタイルの扱いが変わる可能性があります。
まずはテスト送信で、Gmail、iPhoneメール、Outlookなど主要な環境を確認しておくと安心です。

ボタンのリンク先を一覧ページにしたい場合

Automatic Latest Contentブロックのボタンは、基本的に投稿詳細ページへリンクします。

カスタム投稿の詳細ページを使わず、一覧ページ上のモーダルで内容を見せているサイトでは、このリンク先が少し困ります。
この場合は、投稿詳細ページ側で一覧ページへリダイレクトする方法が現実的です。

PHP
add_action('template_redirect', function () {
    if (!is_singular('album') || is_preview()) {
        return;
    }

    wp_safe_redirect(home_url('/albums/'), 302);
    exit;
});

album は実際のカスタム投稿タイプ名に、/albums/ は実際の一覧ページURLに置き換えてください。

運用が固まるまでは 302 にしておくのがおすすめです。
恒久的に詳細ページを使わない方針が決まってから 301 に変更すると、ブラウザや検索エンジンのキャッシュで困りにくくなります。

モーダルまで自動で開きたい場合は、スラッグをクエリに渡す方法もあります。

PHP
add_action('template_redirect', function () {
    if (!is_singular('album') || is_preview()) {
        return;
    }

    $album_slug = get_post_field('post_name', get_queried_object_id());
    $url = add_query_arg('album', $album_slug, home_url('/albums/'));

    wp_safe_redirect($url, 302);
    exit;
});

一覧ページ側のJavaScriptで ?album=xxx を読み取り、該当するアルバムのモーダルを開けば、メールからの導線も自然になります。

注意点

mailpoet_automated_latest_content_post でできるのは、あくまでAutomatic Latest Contentブロックに渡される投稿データの加工です。

次のような用途には向いていません。

  • ボタンのHTML構造を丸ごと差し替える
  • MailPoetのテーブルレイアウトを自由に組み替える
  • メール全体のHTMLを完全に制御する
  • ブロックエディタ上の設定項目を増やす

最終的なHTMLを無理に置換する方法も考えられますが、MailPoetのバージョンアップやテンプレート変更の影響を受けやすくなります。
運用で長く使うなら、公式フィルターで触れる範囲に収める方が安全です。

また、200〜300件程度にメールを送る場合でも、WordPress標準のメール送信だけに頼ると到達率が不安定になることがあります。
MailPoetの送信サービス、またはSMTP系プラグインを使って、送信元ドメインの認証も含めて整えておくのがおすすめです。

まとめ

MailPoetのAutomatic Latest Contentブロックは便利ですが、カスタム投稿タイプの通知メールでは表示が少し合わないことがあります。

mailpoet_automated_latest_content_post を使うと、元の投稿データはそのままに、メール表示用のタイトルや抜粋だけを調整できます。
「アルバムが更新されました」「〇〇のアルバムを追加しました」のような自然な通知文にできるので、エディタ上の制約に悩んでいる場合に使いやすい方法です。

HTML構造を完全に自由化するものではありませんが、MailPoet標準のPost Notificationを活かしながら、実案件で必要な見た目に近づけられます。

ポイント

  • MailPoetのPost NotificationではAutomatic Latest Contentブロックが重要
  • mailpoet_automated_latest_content_post でメール表示用の投稿データを加工できる
  • カスタム投稿タイプごとにタイトルや抜粋文を出し分けられる
  • ボタンのリンク先は投稿詳細になるため、必要なら一覧ページへリダイレクトする
  • ボタンHTMLやレイアウト全体の差し替えには向かないため、公式フィルターで触れる範囲を見極める

参考リンク

read next