メインコンテンツへスキップ
見出し画像

Event Organiserのイベントがフィードに出ない!通常のRSSにまとめる方法とPHP 8.3以降の注意点

    WordPressのイベント管理プラグイン「Event Organiser」は、ライブ情報やレッスン日時、発表会などを、カレンダーやリストで表示できる高機能プラグインです。
    投稿記事とは別に「イベント」という枠で投稿するので、ブログとイベントを分けたいときに便利です。

    ただそれゆえに、イベント投稿は通常のRSSフィードに出力されないという問題がありました。

    フィードを1つしか登録できない場所に更新情報をまとめて出したかったので、functions.phpに追記する方法で解決しました。
    注意点もあるのでまとめておきます。

    この記事で分かること

    WordPressのイベント管理プラグイン「Event Organiser」のイベントを、ブログ記事と同じ通常のRSSフィードにまとめて出す方法です。

    確認した環境

    • PHP 8.5.12

    • WordPress 7.1.4

    • Event Organiser 3.12.11

    • テーマ:Cocoon 2.9.6

    フィードが2つに分かれている理由と対策

    Event Organiserのイベントは、通常の投稿とは別の投稿タイプ(event)です。
    そのため、通常のフィード ( https://ドメイン/feed/ ) には出ず、イベント専用のフィード ( https://ドメイン/feed/eo-events/ ) に分かれて出力されます。

    今回は、functions.phpに追記する形で、Event Organiserのイベントを通常のフィードに出す方法を中心に解説します。


    【先に確認】PHP 8.3以降は「重大なエラー」になることがあります

    【2026年10月31日 追記】Event Organiser 3.12.12 に更新すれば、この方法がそのまま使えます
    3.12.12 で、PHP 8.3以降で「重大なエラー」になる問題が修正されました(詳しくは、検索エラーの記事に追記しています)。
    私の環境(PHP 8.5.12)でも、3.12.12 に更新したあと、functions.phpに追記した方法で、通常のフィードにイベントが出ることを確認しました。

    WordPressのサイト内検索が「重大なエラー」に。原因はEvent Organiserだった

    この記事の方法(functions.phpに追記)は、PHP 8.3以降の環境では、そのままだとフィードが「このサイトで重大なエラーが発生しました」と表示され取得できない状態になることがあります。

    原因は、以前投稿したサイト内検索のエラーと同じです。
    通常の投稿とイベントが混ざったクエリで、Event Organiserが日時のない投稿にまで日時を作ろうとしてPHPの例外が出ます。
    2026年10月30日時点でプラグインの公式の修正はまだ出ていません。

    そのため、先にプラグインの修正を入れてから、この方法を試してください。

    この問題は、Event Organiser 3.12.12(2026年10月30日配布)で修正されています。
    3.12.11 以前をお使いの場合は、先にプラグインを更新してから、この方法を試してください。

    Event Organiser - WordPress プラグイン

    プラグイン本体を触りたくない場合は、【解決方法2】で外部サービスで結合する方法を紹介しています。


    【解決方法1】functions.phpで通常のフィードにまとめる

    ※先に上の修正を済ませてから行ってください。

    テーマの functions.php(子テーマ推奨)に、次を追加します。

    // イベントをメインFeedに含める
    function include_events_in_main_feed( $query ) {
        if ( $query->is_feed() && ! is_admin() ) {
            $query->set( 'post_type', array( 'post', 'event' ) );
        }
    }
    add_action( 'pre_get_posts', 'include_events_in_main_feed' );

    フィードのクエリに、投稿タイプとして post と event の両方を指定しています。
    追加後に https://ドメイン/feed/ を開き、記事とイベントの両方が出ていれば成功です。

    フィードの件数に注意

    記事とイベントが1つのフィードに混ざるので、表示件数が足りないと、通常の記事が押し出されます。
    「設定 → 表示設定」の「RSS/Atom フィードに表示する最新の項目数」を、少し多めにしておくと安心です。


    【解決方法2】PHPやプラグインを触りたくない場合

    コードもプラグイン本体も触りたくない場合はフィードを結合するサービスを使う方法があります。

    WordPressで出力される通常のフィード ( https://ドメイン/feed/ ) と、イベント専用のフィード ( https://ドメイン/feed/eo-events/ ) の2つを、結合サービスで1つのURLにまとめて利用する方法です。

    たとえば、RSS.appの「RSSバンドル」は複数のRSSフィードを1つのバンドルにまとめる機能で、コーディングは不要と説明されています。

    私は方法1で解決したので、こちらは試していませんが、利用されている方がいらっしゃればコメントで使い勝手などを教えていただけると幸いです。

    フィード統合サービスの長所

    • functions.phpにコードを足さなくて済む

    • PHPのバージョンが上がっても、エラーの心配がない可能性が高い

    フィード統合サービスの短所

    • 外部サービスに依存する(サービスが終了すると、フィードが止まる)

    • 結合の設定や、並び順、更新の間隔は、サービスの仕様に従う


    あとがき

    イベントを通常のフィードに出すだけなら、pre_get_posts の数行で足りるんですが、以前使っていたイベントの場所や開始時間をフィードに独自タグで出力する方法は今回省略しました。
    この方法は本家のブログへ書いていますが、PHP 8.3以降の環境での動作も保証できないため、ここでは紹介しないでおきます。

    この記事が参加している募集

    あなたへのおすすめ