トランスビット
トランスビットの開発ノート Webサイト制作に役立つTipsやトラブルシューティングなどの備忘録

Event OrganiserのカレンダーウィジェットのタイトルをY年Fにする

Event Organiserのカレンダーウィジェットのタイトル……っていうかキャプションの日付表示が、’F Y’なのを、’Y年F’にする

要は、こういうことです。
widget_calendar

方法:1 直接プラグインをいじる。

編集するファイルは event-organiser/classes/class-eo-calendar-widget.php です。
プラグインアップデートの度に作業が必要な愚策ですが、一応目的は果たせます。

 
// 編集ファイル:event-organiser/classes/class-eo-calendar-widget.php

// $title = sprintf( '<caption> %s </caption>', esc_html( eo_format_datetime( $month, 'F Y' ) ) );
$title = sprintf( '<caption> %s </caption>', esc_html( eo_format_datetime( $month, 'Y年F' ) ) );

方法:2 function.phpでフィルターフックをかける。

やるなら断然こちらですね。
eo_format_datetime関数を調べると、フィルターフックがeventorganiser_format_datetimeということと、その使い方までわかります。
本当、コーデックス様々です。

ちなみに、同じようにしたいと思った人と、それができた人を見つけました。
WordPress プラグイン Event Organiserの日付表示について

上記プラグインにてウィジェットでカレンダーを表示しています。

カレンダーの日付部分が ◯月 2016といった表示になってしまいます。これを 2016 ◯月という風に年・月に表示を変更したいのですがプラグインのファイルを探してみても変更場所がみつかりません。
変更箇所がわかる方、どうかお教えいただけませんでしょうか

(captionの部分です)
—–
回答:こんな感じですかね。

// functions.php
function my_eventorganiser_format_datetime( $formatted_datetime , $format, $datetime ) {
    if ( $format === 'F Y' ) {
        return eo_format_datetime( $datetime, 'Y年 F' );
    } else {
        return $formatted_datetime;
    }
} // 未テスト
add_filter( 'eventorganiser_format_datetime', 'my_eventorganiser_format_datetime', 10, 3 );

残念ながら、質問者さんは実現できなかったようです。
私もやってみたんですが、すぐにはダメでした。後でできました。
というのも、ウィジェットを置きなおしてみたら、それまで効いていなかったフックが効いたんで。

別にオチをつけたかったわけじゃないんですけど……色々やってみるもんですね。

Filed under: