All-in-One Event Calendar
WordPressのプラグインにはとても便利なものが沢山、公開されていますよね!
例えば今回のメイン記事になるイベントを公開するカスタム記事用プラグインである「All-in-One Event Calendar by Time.ly」プラグインは使いやすく、お知らせ表示機能など様々な機能が付いています。
イベント記事は”カスタム投稿タイプ”
しかし、このプラグインで作成した記事は「イベント(カスタム投稿タイプ)」であり、通常の投稿記事のような通常の投稿(post)記事ではないので、WordPressのメインページで表示される投稿記事リスト(記事のサムネイルと記事抜粋の記事リスト)には表示されません。
従って、カスタム投稿記事になるAll-in-One Event Calendarのイベント記事はサイドウィジットにはイベント通知で表示される以外、通常の記事として表示されることがありません。
通常の投稿記事(Post)として表示させたい。
イベント記事も通常の投稿ポスト記事と同じように一覧に時系列で表示はできないものかを考えた時に、解決策としてWordPressがデータベース(MySQL)から記事を検索するときの検索クエリに表示したいイベント(カスタム投稿タイプ)を追加することで実現することができます。
メインページにイベント情報も”記事”として表示させる方法
SQL検索クエリで表示したいイベント(カスタム投稿タイプ)を追加するには、「functions.php」に以下のコードを追加することで解決させることができます。
//All-in-One Event Calendarプラグインのカスタム投稿タイプをメインページに表示させる。
function my_search_filter($query) {
if (is_home() && $query->is_main_query() ) {
$query->set( 'post_type', array( 'post', 'ai1ec_event' ) );
}
}
add_action( 'pre_get_posts', 'my_search_filter' );
「functions.php」ソースコードの解説
「All-in-One Event Calendar」のイベントカスタム投稿タイプ関数は‘ai1ec_event’で定義されているため、上記コードの$query->set( );の中で‘ai1ec_event’を検索リストの対象配列に追加しています。
※「All-in-One Event Calendar」のイベントに限らず、その他のプラグインで追加されたカスタム投稿タイプも関数名がわかれば上記ソースコードの複製で‘ai1ec_event’を置き換えて検索対象に追加することができます。
if (is_home() && $query->is_main_query() ) の条件文の中のis_home()は,メインページに関する検索のときだけに限定をするためのWordPressの条件分岐タグとなります。