概要
acf/fields/post_object/query
は、Advanced Custom Fields (ACF) プラグインにおいて、投稿オブジェクトフィールドのクエリをカスタマイズするために使用されるフィルターフックです。このフィルタを利用することで、特定の条件に基づいて投稿のリストを取得したり、表示する投稿の種類を変更したりすることができます。
このフィルタは、次のような機能を実装する際によく使われます:
- 特定の投稿タイプの投稿のみを表示する
- 投稿のステータス(公開、非公開など)をフィルタリングする
- カスタムタクソノミーに基づいて投稿を絞り込む
- 指定した条件を満たす投稿だけを取得する
- ソート順をカスタマイズする
- 投稿のメタデータに基づいてフィルタリングする
構文
add_filter('acf/fields/post_object/query', 'my_post_object_query', 10, 3);
パラメータ
$args
: WP_Queryに渡される引数の配列$field
: フィールドオブジェクト$post_id
: 現在の投稿のID
戻り値
- フィルターを適用した$args配列
対応バージョン
- Advanced Custom Fields: 5.0以上
- WordPress: 4.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('acf/fields/post_object/query', 'custom_post_object_query', 10, 3);
function custom_post_object_query($args, $field, $post_id) {
$args['post_type'] = 'custom_post_type'; // 'custom_post_type' を特定の投稿タイプに設定
return $args;
}
このサンプルコードは、投稿オブジェクトフィールドから特定のカスタム投稿タイプである custom_post_type
の投稿のみを取得します。
サンプル2: 投稿のステータスによるフィルタリング
add_filter('acf/fields/post_object/query', 'filter_by_post_status', 10, 3);
function filter_by_post_status($args, $field, $post_id) {
$args['post_status'] = 'publish'; // 公開された投稿のみを取得
return $args;
}
このコードは、投稿オブジェクトフィールドにおいて、公開された投稿のみを表示するために投稿のステータスを publish
に設定します。
サンプル3: タクソノミーを使用したフィルタリング
add_filter('acf/fields/post_object/query', 'filter_by_taxonomy', 10, 3);
function filter_by_taxonomy($args, $field, $post_id) {
$args['tax_query'] = array(
array(
'taxonomy' => 'custom_taxonomy',
'field' => 'slug',
'terms' => 'term_slug',
),
);
return $args;
}
このサンプルは、特定のタクソノミー custom_taxonomy
から term_slug
に一致する投稿のみをクエリで取得します。
サンプル4: メタクエリによるフィルタリング
add_filter('acf/fields/post_object/query', 'filter_by_meta', 10, 3);
function filter_by_meta($args, $field, $post_id) {
$args['meta_query'] = array(
array(
'key' => 'meta_key',
'value' => 'meta_value',
'compare' => '=',
),
);
return $args;
}
このコードは、特定のメタキーとその値に基づいて投稿をフィルタリングします。
サンプル5: 投稿順序のカスタマイズ
add_filter('acf/fields/post_object/query', 'sort_posts_by_title', 10, 3);
function sort_posts_by_title($args, $field, $post_id) {
$args['orderby'] = 'title'; // タイトルでソート
$args['order'] = 'ASC'; // 昇順
return $args;
}
このコード例は、投稿をタイトルに基づいて昇順でソートします。
これらのサンプルコードは、Advanced Custom Fieldsの acf/fields/post_object/query
フィルタを利用して投稿オブジェクトフィールドの表示をカスタマイズする方法を示しています。