概要
フィルタ tec_events_custom_tables_v1_query_modifier_applies_to_query
は、The Events Calendar プラグイン内でのクエリの動作を変更するために使用されます。このフックは、イベントとのインタラクションをカスタマイズするための非常に便利な手段を提供します。具体的には、以下のような機能を実装する際によく使われます。
- 特定のカテゴリーのイベントのみを表示する。
- 特定のユーザーが作成したイベントをフィルタリングする。
- 参加者数や参加条件によってイベントをソートする。
- 特定のカスタムフィールドに基づいてイベントをフィルタリングする。
- イベントの開始日時や終了日時に基づいてクエリを調整する。
- カスタムクエリの実行時に、デフォルトの動作を変更する。
構文
add_filter('tec_events_custom_tables_v1_query_modifier_applies_to_query', 'custom_function_name', 10, 2);
パラメータ
apply_to_query
: 変更されるクエリのインスタンス。context
: クエリの設定や使用されるコンテキストに関する情報。
戻り値
- 変更後のクエリインスタンス。
バージョン
- The Events Calendar: 6.0.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 |
サンプルコード
以下に、tec_events_custom_tables_v1_query_modifier_applies_to_query
フィルタを使用するサンプルコードを5つ紹介します。
サンプルコード1
add_filter('tec_events_custom_tables_v1_query_modifier_applies_to_query', 'filter_past_events', 10, 2);
function filter_past_events($apply_to_query, $context) {
if ('event_query' === $context) {
$apply_to_query->set('date_query', array(
array(
'after' => 'today',
),
));
}
return $apply_to_query;
}
このサンプルでは、未来のイベントのみを表示するためのフィルタを設定します。
サンプルコード2
add_filter('tec_events_custom_tables_v1_query_modifier_applies_to_query', 'filter_by_event_category', 10, 2);
function filter_by_event_category($apply_to_query, $context) {
if ('event_query' === $context) {
$apply_to_query->set('tax_query', array(
array(
'taxonomy' => 'tribe_events_cat',
'field' => 'slug',
'terms' => 'special-events',
),
));
}
return $apply_to_query;
}
このコードは、特定のカテゴリー(’special-events’)に属するイベントのみをフィルタリングします。
サンプルコード3
add_filter('tec_events_custom_tables_v1_query_modifier_applies_to_query', 'filter_by_user_events', 10, 2);
function filter_by_user_events($apply_to_query, $context) {
if ('event_query' === $context) {
$user_id = get_current_user_id();
$apply_to_query->set('author', $user_id);
}
return $apply_to_query;
}
この例は、現在のユーザーが作成したイベントのみを表示します。
サンプルコード4
add_filter('tec_events_custom_tables_v1_query_modifier_applies_to_query', 'sort_events_by_participants', 10, 2);
function sort_events_by_participants($apply_to_query, $context) {
if ('event_query' === $context) {
$apply_to_query->set('meta_key', 'participant_count');
$apply_to_query->set('orderby', 'meta_value_num');
$apply_to_query->set('order', 'DESC');
}
return $apply_to_query;
}
このフィルタは、参加者数に従ってイベントをソートします。
サンプルコード5
add_filter('tec_events_custom_tables_v1_query_modifier_applies_to_query', 'filter_events_by_custom_field', 10, 2);
function filter_events_by_custom_field($apply_to_query, $context) {
if ('event_query' === $context) {
$apply_to_query->set('meta_query', array(
array(
'key' => 'event_venue',
'value' => 'Tokyo',
'compare' => 'LIKE',
),
));
}
return $apply_to_query;
}
このコードでは、特定のカスタムフィールド(’event_venue’が’Tokyo’であるイベント)でのフィルタリングを行います。