はじめに
以下をCocoonで実現します。
Cocoon 2.7.6からフックが追加され、通知メッセージや通知URLを簡単に変更できるようになりました。
そこで、この機能を使用して、投稿ごとに通知メッセージと通知URLを変更します。
この記事では、この方法について説明します。
実装手順
以下の手順で実装します。
- ラベルCocoon設定
表1に示す項目を設定します。
Cocoon設定 設定 大項目 項目 設定値 通知 通知設定 通知エリアを表示する オン 通知メッセージ 通知URL - ラベルGutenbergエディターでの設定

Gutenbergエディター 図2に示すメモに、以下のように入力します。
メモに入力がある場合、メモの内容が優先されて通知エリアに表示されます。通知メッセージ, 通知URL - ラベルPHPを追加
以下のコードをfunctions.phpに追加します。
/** * 投稿のカスタムフィールドから通知データを取得 * * @param int $post_id 投稿ID * @return array|null 通知データの配列 */ if (!function_exists('get_notice_data')): function get_notice_data($post_id) { $memo = strip_tags(get_post_meta($post_id, 'the_page_memo', true)); if (empty($memo)) { return null; } return explode(',', $memo); } endif; // Cocoon設定(通知)の通知メッセージを変更 add_filter('get_notice_area_message', function ($msg) { if (is_single()) { $data = get_notice_data(get_the_ID()); // メッセージが存在する場合 if (isset($data[0])) { $msg = stripslashes_deep($data[0]); } } return $msg; }); // Cocoon設定(通知)の通知URLを変更 add_filter('get_notice_area_url', function ($url) { if (is_single()) { $data = get_notice_data(get_the_ID()); // URLが存在する場合 if (isset($data[1])) { $target_url = trim($data[1]); // 正当なURL形式かチェックし、不正なら空文字を返す $url = filter_var($target_url, FILTER_VALIDATE_URL) ? $target_url : ''; } } return $url; });
さいごに
今回紹介した方法を使えば、投稿ごとに通知メッセージと通知URLを簡単に変更できます。
ここでは、Cocoonに備わっているメモ(カスタムフィールド名the_page_memo)を利用しています。
これにより、柔軟に通知内容をカスタマイズできるようになります。


