「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
関連記事
-
-
以前「Events Manager」の検索フォームにカスタム分類のフィールドを追 …
-
-
「WordPress イベントカレンダー」で検索するといろんなイベントカレンダー …
-
-
会員制のサイトや、クライアントの権限を「編集者」として引き渡しする場合など、動作 …
-
-
ソースコードを投稿し綺麗に表示したい。でもCSSをつくるのは面倒。 でいろんな言 …
-
-
便利なイベントカレンダープラグイン「Events Manager」ですが、フォー …
-
-
イベントカレンダーに欠かせないプラグイン「Events Manager」。今回は …
-
-
会員専用ページをつくるにあたり、いろいろなプラグインがある。今回クライアントの要 …
-
-
WordPressの記事を登録するときショートコードやタグなど手で打つのはめんど …
-
-
申し込みページに住所等の個人情報を入力する場合は、情報流出を防ぐためSSLを導入 …
-
-
クライアントに納品するようなサイトはWordPressのログイン画面のロゴをオリ …