通知エリア用のウィジェットエリアを追加し自由にメッセージを表示する方法

Cocoonカスタマイズ集
この記事は約3分で読めます。
記事内に広告が含まれています。

はじめに

通知メッセージには、HTMLタグやショートコードを入力できません。

そこで、通知エリア用のウィジェットエリアを新しく作成し、「カスタムHTML」ウィジェットを利用して、自由にメッセージを表示できるようにします。

また、ウィジェットの設定を通じて、メッセージの内容や表示期間などを柔軟に変更できます。

この記事では、この方法について説明します。

完成イメージ

実装手順

以下の手順で実装します。

  • ラベル
    Cocoon設定

    表1に示す項目を設定します。

    Cocoon設定
    設定大項目項目設定値
    通知通知表設定通知エリアの表示オン
  • ラベル
    PHPを追加

    以下のコードをfunctions.phpに追加します。

    // ウィジェットエリアを追加
    add_action('widgets_init', function () {
      register_sidebar([
        'name'          => '通知エリア',
        'id'            => 'add-notice-contents',
        'description'   => '通知エリアに通知メッセージを表示するウィジェットです。',
        'before_widget' => '',
        'after_widget'  => '',
      ]);
    });
    
    
    // Cocoon設定(通知)の通知メッセージを変更
    add_filter('get_notice_area_message', function ($msg) {
      global $_THEME_OPTIONS;
    
      // ウィジェットがない場合
      if (is_admin() || !is_active_sidebar('add-notice-contents')) {
        return $msg;
      }
    
      // Cocoon設定の通知エリアURLを無効
      $_THEME_OPTIONS['notice_area_url'] = '';
    
      // ウィジェットを通知メッセージに設定
      ob_start();
      dynamic_sidebar('add-notice-contents');
    
      return ob_get_clean();
    }, 99);
  • ラベル
    「カスタムHTML」ウィジェット例

    「カスタムHTML」ウィジェットには、次のようにcampaignショートコードを入力できます。
    指定した期間だけ通知メッセージを表示することも可能です。

    [campaign from="2024-12-24 08:00:00" to="2024-12-25 20:00:00"]<a href="URL">通知メッセージ</a>[/campaign]

さいごに

今回紹介した方法を使えば、「カスタムHTML」ウィジェットから通知エリアのメッセージを自由に設定できます。

ショートコードによる表示内容の変更や、表示期間の指定にも対応できるため、フックに直接コードを書いて条件分岐する方法よりも、柔軟に運用できます。

タイトルとURLをコピーしました