「Events Manager」の検索フォームにカスタム分類(カスタムタクソノミー)フィールドを追加する
イベントカレンダーのプラグイン「Events Manager」には絞り込み検索ができる検索フォームが標準で搭載されています。
検索条件は
・キーワード
・日付
・カテゴリ
・場所でそれぞれ指定できます。
でもさらに絞り込み条件を追加したいことがあると思います。そのやり方として、「イベント属性」を使うやり方と、「カスタム分類(カスタムタクソノミー)」を使うやり方の2通りあります。ここではカスタム分類を使ったやり方を紹介します。
カスタム分類を作成
ここでは「Custom Post Type UI」を使ってカスタム分類を作成します。使い方はこちら。例として「音楽」を追加してみます。
「Custom Post Type UI」をインストールし、新規追加を選択し、下記のように右側のエリアを入力します。
・分類名:music
・ラベル:音楽
・利用する投稿タイプ:「イベント」にチェック
・階層(Advanced Optionsをクリックすると表示される):「True」に変更
「カスタム分類作成」ボタンをクリック
すると、「イベント」メニューに「音楽」が追加されるので、ここでは「ロック」「クラシック」「ジャズ」を追加してみます。
イベントを投稿
カスタム分類を作成すると、イベント投稿画面に「音楽」メニューが追加されます。
「カテゴリ」と同じようにチェックを入れることができます。まだこれだけでは検索フォームにメニューは表示されません。
function.phpにコードを追加
検索フォームに「音楽」の絞り込みを表示されるには下記のコードの追加が必要です。
function music_search_form(){
$music = (is_array(get_option('music'))) ? get_option('music'):array();
?>
<!-- START music Search -->
<div class="em-search-teacher em-search-field">
<label>音楽</label>
<select name="music" id="music_search">
<option value="" selected="selected">全ての音楽</option>
<?php
$taxonomies = array('music');
$args = array('orderby'=>'count','hide_empty'=>true);
echo get_terms_dropdown($taxonomies, $args, 'music');
?>
</select>
</div>
<!-- END music Search -->
<?php
}
add_action('em_template_events_search_form_footer','music_search_form');
function my_em_music_event_load($EM_Event){
global $wpdb;
$EM_Event->music = $wpdb->get_col("SELECT term_taxonomy_id FROM $wpdb->term_relationships WHERE object_id='{$EM_Event->post_id}'", 0 );
}
add_action('em_event','my_em_music_event_load',1,1);
function my_em_music_get_default_search($searches, $array){
if( !empty($array['music']) ){
$searches['music'] = $array['music'];
}
return $searches;
}
add_filter('em_events_get_default_search','my_em_music_get_default_search',1,2);
function my_em_music_events_get($events, $args){
if( !empty($args['music']) ){
foreach($events as $event_key => $EM_Event){
if( !in_array($args['music'],$EM_Event->music) ){
unset($events[$event_key]);
}
}
}
return $events;
}
add_filter('em_events_get','my_em_music_events_get',1,2);
function get_terms_dropdown($taxonomies, $args, $taxo_name){
$myterms = get_terms($taxonomies, $args);
foreach($myterms as $term){
$term_name =$term->name;
$value = $term->term_id;
$temp = ((array_key_exists($taxo_name, $_POST)) && $_POST[$taxo_name] == $value) ? 'selected="selected"':'';
$output .= "<option value='" .$value. "'".$temp.">" .$term_name. "</option>";
}
return $output;
}
これで完了。
検索フォームを確認
以上で作業完了です。ではさっそく画面を確認してみます。
検索フォームに「音楽」メニューが追加されました。これをちょっと応用すれば絞り込み条件を複数追加していくことができます。
やっぱりイベントのプラグインはEvents Managerが一番好きかな。
その他Events Managerの記事
・「Events Manager」プラグイン を使ってイベントカレンダーを作成する
・「Events Manager」の検索フォームにイベント属性フィールドを追加する
・「Events Manager」でオリジナルのプレースホルダーを追加する
・「Events Manager」の絞り込み検索ページへリンク(条件込み)を張る方法
・「Events Manager」の絞り込み検索フォームのリストの順序を変更する方法
・「Events Manager」で現在開催中のイベントを示すプレースホルダーを作成する
-
WordPress Events Manager
関連記事
-
-
クライアントに納品するようなサイトはWordPressのログイン画面のロゴをオリ …
-
-
以前に「Events Manager」でオリジナルのプレースホルダーを追加するに …
-
-
便利なイベントカレンダープラグイン「Events Manager」ですが、フォー …
-
-
イベントカレンダーに欠かせないプラグイン「Events Manager」。今回は …
-
-
Webサイト作成後、クライアントに引き渡すとき、管理画面から不要なメニューは表示 …
-
-
WordPressの記事を登録するときショートコードやタグなど手で打つのはめんど …
-
-
お問い合わせフォームを作成するときよく使うプラグイン「Contact Form …
-
-
会員専用ページをつくるにあたり、いろいろなプラグインがある。今回クライアントの要 …
-
-
カスタム投稿を作成した時に、カスタムフィールドの条件をOR条件で抽出したかったり …
-
-
以前「Events Manager」の検索フォームにカスタム分類のフィールドを追 …