We have a CPT people
, and each one people belongs to a department (which is a standard page).
In each department’s internal page we need to find the people that belong to the current department (current page, eg. $post
).
First we need to add a post_where
filter
add_filter( 'posts_where', function ( $where ) { $repeater_field_name = 'people_extra_fields'; $sub_field_name = 'department'; return str_replace( "meta_key = '{$repeater_field_name}_%_{$sub_field_name}'", "meta_key LIKE '{$repeater_field_name}_%_{$sub_field_name}'", $where ); } );
then we use the following query
$repeater_field_name = 'people_extra_fields'; $sub_field_name = 'department'; $people = new WP_Query( [ 'post_type' => 'people', 'posts_per_page' => - 1, 'meta_query' => [ [ 'key' => $repeater_field_name . '_%_' . $sub_field_name, 'value' => $post->ID, 'compare' => 'LIKE' ] ] ] );