メむンコンテンツぞスキップ
芋出し画像

WordPressのサむト内怜玢が「重倧な゚ラヌ」に。原因はEvent Organiserだった

    【2026幎10月31日 远蚘】Event Organiser 3.12.12 で修正されたした

    2026幎10月30日に配垃された Event Organiser 3.12.12 で、この蚘事の問題(日付のないデヌタを凊理しお、PHP 8.3以降で「重倧な゚ラヌ」になる)が修正されたした。
    公匏フォヌラムの同じ゚ラヌ報告にプラグむンの䜜者が「3.12.12 で修正されおいるはず」ず返信しおいたす。

    私の環境(PHP 8.5.12 / WordPress 7.1.4)でも、3.12.12 に曎新しお、サむト内怜玢が正垞に動くこずを確認したした。
    ファむルを曞き換えた修正は曎新で䞊曞きされたすが、そのたたで問題ありたせん。

    3.12.11 以前を䜿っおいる方は、たず 3.12.12 ぞの曎新をおすすめしたす。曎新できない事情がある堎合のために、以䞋に手動の修正方法を残しおいたす。

    Event Organiser - WordPress プラグむン

    WordPressのむベント管理プラグむン「Event Organiser」を䜿っおいるサむトで、サむト内怜玢をするず「このサむトで重倧な゚ラヌが発生したした」ず衚瀺されるようになりたした。

    調べおみるず、PHP 8.3以降で起きるプラグむン偎の問題で、数行の修正で盎せたした。

    Event Organiser、ちょこちょこ䞍具合でおくるんで自分のメモずあわせお、同じ症状で困っおいる方の参考になればず思い曞き留めずきたす。

    WordPressサむトで怜玢するず゚ラヌが発生

    PHP 8.3 からPHP 8.5 ぞの曎新を行なった盎埌の動䜜確認で゚ラヌが発生。

    確認した環境

    • PHP 8.5.12

    • WordPress 7.1.4

    • Event Organiser 3.12.11

    • テヌマCocoon 2.9.6


    【症状】サむト内怜玢が「重倧な゚ラヌ」になる

    • サむト内怜玢の結果ペヌゞが重倧な゚ラヌで衚瀺されない

    • Event Organiserを無効化するず怜玢は正垞に動く

    ちなみに私の堎合、通垞の蚘事ずむベントの䞡方を通垞フィヌドに出す蚭定にしたずきも、同じ゚ラヌになりたした。

    フィヌドを通垞投皿ず同じRSSに出力したい堎合は、フィヌドをたずめる方法の蚘事も曞いおいるので参考にしおみおください。
    ただし、
    絶察この蚘事の内容が解決しおからにしおね
    たたはEvent Organiserを最新にアップデヌト


    【゚ラヌの内容】debug.logの「DateMalformedStringException」

    wp-content/debug.log には、次のように蚘録されおいたした。

    PHP Fatal error: Uncaught DateMalformedStringException:
    Failed to parse time string ( ) at position 0 ( ): Empty string
    in .../plugins/event-organiser/includes/event-organiser-archives.php:632

    ログの出し方は、wp-config.php に次を曞くだけです。
    (調査が終わったら WP_DEBUG は false に戻しおください)

    define( 'WP_DEBUG', true );
    define( 'WP_DEBUG_LOG', true );
    define( 'WP_DEBUG_DISPLAY', false );

    【原因】PHP 8.3以降の仕様倉曎ずEvent Organiserの日付凊理

    ゚ラヌが出おいるのは _eventorganiser_update_event_dates_cache() ずいう関数です。
    この関数は取埗した蚘事ごずに、むベントの開始日・終了日から日時のオブゞェクトを䜜っおキャッシュしたす。

    ずころが、怜玢結果やFeedのように、通垞の投皿ずむベントが混ざったク゚リでも、この関数が動きたす。
    日時のデヌタを持たない通垞の投皿に察しおも日時を䜜ろうずしお、実質的に空癜だけの文字列を枡しおしたいたす。

    PHP 8.2たでは、この空の文字列を黙っお受け入れおいたした。
    PHP 8.3以降は䟋倖が投げられるようになり、臎呜的゚ラヌになった、ずいうのが私の芋解です。

    同じ゚ラヌは、WordPress公匏のサポヌトフォヌラムにも、耇数の方が報告しおいたす。

    【2026幎10月31日 远蚘】Event Organiser 3.12.12 で修正されたした
    2026幎10月30日に配垃された Event Organiser 3.12.12 で、この蚘事の問題(日付のないデヌタを凊理しお、PHP 8.3以降で「重倧な゚ラヌ」になる)が修正されたした。
    公匏フォヌラムの同じ゚ラヌ報告にプラグむンの䜜者が「3.12.12 で修正されおいるはず」ず返信しおいたす。

    Event Organiser - WordPress プラグむン

    【解決方法】event-organiser-archives.phpを数行修正する

    event-organiser-archives.php の _eventorganiser_update_event_dates_cache() の䞭、
    foreach の盎埌に日時デヌタを持たない投皿を飛ばす凊理を足したす。

    修正前 event-organiser-archives.php

    	foreach ( $events as $event ) {
    
    		$id = $event->ID;
    		$cached_event = (array) wp_cache_get( 'eventorganiser_occurrences_'.$id );

    修正埌 event-organiser-archives.php

    	foreach ( $events as $event ) {
    
    		// むベントの日時デヌタを持たない投皿(怜玢結果の通垞蚘事など)はスキップ
    		if ( empty( $event->StartDate ) || empty( $event->StartTime )
    			|| empty( $event->EndDate ) || empty( $event->FinishTime )
    			|| ! isset( $event->occurrence_id ) ) {
    			continue;
    		}
    
    		$id = $event->ID;
    		$cached_event = (array) wp_cache_get( 'eventorganiser_occurrences_'.$id );

    足したのは if のブロックだけです。
    日時のデヌタを持぀本物のむベントは今たでどおり凊理され、持たない投皿だけが飛ばされたす。

    この修正で怜玢が正垞に動き、むベントも怜玢結果に出るこずを確認したした。


    泚意点1. プラグむン曎新で元に戻る

    プラグむン本䜓のファむルを修正しおいるので、プラグむンがアップデヌトを行なった際に曎新するず、この修正は消えたす。

    【2026幎10月31日 远蚘】
    Event Organiser 3.12.12以降のアップデヌトでは、曎新しおも自分の修正が消えるだけで公匏の修正に眮き換わりたす。
    ただし远加で他の修正などを本䜓ファむルで行っおいる堎合は泚意が必芁です。

    Event Organiser - WordPress プラグむン

    曎新埌に同じ゚ラヌが出たら入れ盎しが必芁です。
    修正したファむルを、日付を぀けお保管しおおくず安心です。

    たた、プラグむンの本䜓を曞き換える方法なので自己責任です。
    䜜業前に必ずファむルのバックアップを取っおください。

    正盎、Event Organiserの曎新は遅めなんで今回はもう盎接やっちゃれヌっお感じで匄りたした。
    自動曎新はOFFにしおおいおください。


    泚意点2. 原因を特定する際のプラグむン無効化に぀いお

    原因の切り分けには、たず Event Organiser を無効化しお怜玢が盎るかを確認する方法が早いです。

    ただし、テヌマの functions.php に Event Organiser の関数を呌ぶコヌドがあるず、プラグむンを無効化したずきにサむト党䜓が゚ラヌで止たるこずがありたす。
    そのずきは、function_exists( '関数名' ) で守っおおくず安党です。

    たた、管理画面に入れなくなった堎合は、FTPでプラグむンのフォルダ名を倉えれば無効化できたす。


    【別の解決方法】プラグむン本䜓を觊りたくない堎合

    サむト内怜玢からむベントを倖す簡易

    プラグむンのファむルを觊りたくない堎合は、サむト内怜玢の察象からむベントを倖す方法もありたす。
    怜玢結果にむベントが含たれなければ問題の凊理が呌ばれず、゚ラヌを避けられたす。

    テヌマの functions.php子テヌマ掚奚の末尟に、次を远加したす。

    // サむト内怜玢から、むベント(event)だけを陀倖する
    add_action( 'pre_get_posts', function ( $query ) {
        if ( ! is_admin() && $query->is_main_query() && $query->is_search() ) {
            $types = get_post_types( array( 'exclude_from_search' => false ) );
            unset( $types['event'] );
            $query->set( 'post_type', array_values( $types ) );
        }
    } );

    泚意点ずしおはむベントが怜玢結果に出なくなるので、むベントの扱いによっおは利甚しにくいず思いたす。
    自分はラむブスケゞュヌルに䜿っおいたので、そもそもサむト怜玢できないずなるず䞍䟿なのでこの案は华䞋したした。

    ただ、プラグむンを曎新しおも消えないので本䜓の修正より管理は楜です。


    PHPを8.2に䞋げお回避するあたりおすすめではない

    コヌドを觊りたくない堎合は、サヌバヌのPHPを8.2に䞋げるず、同じ問題を避けられる可胜性がありたす。

    私の環境では、PHP 8.3.36 のずきは怜玢が動いおいお、PHP 8.5.12 ず Event Organiser 3.12.11 に曎新した埌に゚ラヌになりたした。
    どちらの曎新が匕き金か、切り分けはできおいたせん。
    この゚ラヌはPHP 8.3で導入された䟋倖によるものですが、8.3で必ず起きるずは限らないようです。

    ただし、PHP 8.2はサポヌト期限が近く2026幎12月末たでなので、同じサヌバヌ䞊の他のサむトにも圱響するこずがありたす。
    長く䜿う前提なら、前述のコヌド修正のほうがおすすめです。


    あずがき

    Event Organiserは、フォヌラムでも「保守されおいるのか」ずいう声が出おいるプラグむンなので、ちょっず今埌は考えものなんですよね。
    ただフォヌラムの報告から11日埌(10月30日)に修正版が出たので䞀応動いおはいるみたいですね。
    今回の修正で圓面は動きたすが、長く䜿うなら他の方法ぞの移行も怜蚎しおおいたほうがよさそうです。

     
     
    い぀もは鍵盀吹いおたす。➡ https://blow-organ.net/ 䞻にサむト運営やWordPressやらのトラブルを盎した際のこずを曞いおおきたす。 ある意味自分甚でもありたす。

    あなたぞのおすすめ