概要
tec_events_custom_tables_v1_events_only_modifier_before_get_posts
フィルタは、The Events Calendarプラグインでイベントのみを取得する際に、クエリの修正を行うために使用されるフックです。このフィルタを利用することで、デフォルトのイベントクエリにカスタムな条件を追加したり、特定のパラメータを変更したりすることが可能になります。
このフィルタは、以下のような機能を実装する際によく使われます:
- 特定のカテゴリーのイベントだけを取得する。
- イベントの開催日を基準にしたフィルタリングを行う。
- 投稿者による限定されたイベントの表示。
- カスタムメタデータに基づいたイベントのフィルタリング。
- 通常の投稿とイベントを混在させたカスタムクエリの作成。
- ソート順序のカスタマイズ。
構文
add_filter('tec_events_custom_tables_v1_events_only_modifier_before_get_posts', 'your_custom_function');
パラメータ
$query
: WP_Queryオブジェクト。クエリの詳細を含む。
戻り値
- 修正されたWP_Queryオブジェクト。
対応バージョン
- The Events Calendarバージョン:5.0以上
- WordPressバージョン:5.0以上
この関数のアクションでの使用可能性
アクション | 使用可能性 |
---|---|
mu_plugin_loaded | |
registered_post_type | |
plugins_loaded | |
wp_roles_init | |
setup_theme | |
after_setup_theme | |
set_current_user | |
init | |
register_sidebar | |
wp_loaded | |
send_headers | |
parse_query | |
pre_get_posts | |
wp | |
template_redirect | |
get_header | |
wp_head |
サンプルコード
サンプルコード 1: 特定のカテゴリーのイベントのみを表示する
add_filter('tec_events_custom_tables_v1_events_only_modifier_before_get_posts', function($query) {
if(is_post_type_archive('tribe_events')) {
$query->set('tax_query', array(
array(
'taxonomy' => 'tribe_events_cat',
'field' => 'slug',
'terms' => 'your-category-slug',
),
));
}
return $query;
});
このコードは、特定のカテゴリーに属するイベントのみを表示するため、クエリにtax_query
を追加します。
サンプルコード 2: 開催日が未来のイベントのみ取得する
add_filter('tec_events_custom_tables_v1_events_only_modifier_before_get_posts', function($query) {
if(is_post_type_archive('tribe_events')) {
$query->set('meta_query', array(
array(
'key' => '_EventStartDate',
'value' => current_time('Y-m-d H:i:s'),
'compare' => '>=',
'type' => 'DATETIME',
),
));
}
return $query;
});
このコードは、現在時刻以降のイベントのみを取得するために、meta_query
を追加します。
サンプルコード 3: 特定の投稿者によるイベントのみ取得する
add_filter('tec_events_custom_tables_v1_events_only_modifier_before_get_posts', function($query) {
if(is_post_type_archive('tribe_events')) {
$query->set('author', '1'); // 投稿者IDを指定
}
return $query;
});
このコードは、特定の投稿者によって作成されたイベントのみを表示するために、author
パラメータを設定します。
サンプルコード 4: カスタムフィールドに基づいてイベントをフィルタリングする
add_filter('tec_events_custom_tables_v1_events_only_modifier_before_get_posts', function($query) {
if(is_post_type_archive('tribe_events')) {
$query->set('meta_query', array(
array(
'key' => 'your_custom_field',
'value' => 'some_value',
'compare' => '='
),
));
}
return $query;
});
このコードは、カスタムフィールドの値に基づいてイベントをフィルタリングします。
サンプルコード 5: イベントを日付順でソートする
add_filter('tec_events_custom_tables_v1_events_only_modifier_before_get_posts', function($query) {
if(is_post_type_archive('tribe_events')) {
$query->set('orderby', 'meta_value');
$query->set('meta_key', '_EventStartDate');
$query->set('order', 'ASC');
}
return $query;
});
このコードは、イベントを開始日で昇順にソートするために、orderby
とmeta_key
を設定します。