「All-in-One Event Calendar」でイベントを検索結果に表示させる方法

WordPressプラグイン「All-in-One Event Calendar」

このプラグインを使えば、簡単にサイト上に独自のカレンダーを設置することができます。

ただ、このプラグインには癖があって、若干カスタマイズをしていかないと上手く使いこなせません。

今日はその中でも一つのカスタマイズ方法を紹介。

イベントが検索結果に表示されない

「All-in-One Event Calendar」で投稿されたイベントは通常の投稿タイプとは異なる「カスタム投稿タイプ」で記録されます。

そのため、通常の投稿とは扱いが異なります。

イベント内容を検索結果に表示させたい場合、

「外観」→「テーマの編集」→「functions.php」の一番下に次のようなコードを追記する必要があります。

//All-in-One Event Calendarプラグインのカスタム投稿タイプもメインページにリストする
function my_search_filter($query) {
  if (is_search() && $query->is_main_query() ) {
    $query->set( 'post_type', array( 'post', 'page', 'ai1ec_event' ) );
  }
}
add_action( 'pre_get_posts', 'my_search_filter' );

このコードを追加することで「is_search()」、検索結果にイベント内容が表示されるようになります。

また、赤字にした変数を変更することで、別の場所でも表示が可能です。

たとえばトップページで表示させたい場合、「is_search()」を「is_home()」に置き換えればOKです。

他の条件分布タグ

条件分布タグは他にもたくさんありますので、以下をご参照ください。

条件分岐タグ
is_404(), is_admin(), is_admin_bar_showing(), is_archive(), is_attachment(), is_author(), is_category(), is_comments_popup(),is_date(), is_day(), is_feed(), is_front_page(), is_home(), is_local_attachment(), is_main_query, /is_multi_author, is_month(), is_new_day(),is_page(), is_page_template(), is_paged(), is_plugin_active(), is_plugin_active_for_network() /en, is_plugin_inactive() /en, is_plugin_page() /en,is_post_type_archive(), is_preview() /en, is_search(), is_single(), is_singular(), is_sticky(), is_tag(), is_tax(), is_taxonomy_hierarchical(), is_time(),is_trackback(), is_year(), in_category(), in_the_loop(), is_active_sidebar(), is_active_widget(), is_blog_installed() /en, is_rtl(), is_dynamic_sidebar(),is_user_logged_in(), has_excerpt(), has_post_thumbnail(), has_tag(), pings_open(), email_exists(), post_type_exists(), taxonomy_exists(),term_exists(), username_exists() /en, wp_attachment_is_image(), wp_script_is()

いかがでしょうか。

少しだけ応用編ではありますが、ご紹介でした。

コメントを残す

メールアドレスが公開されることはありません。