Не хочет работать фильтр :( Не модифицирует запрос, выводит все посты.
Фильтровать надо по мета-полям посты кастомного типа.
Сам запрос, который модифицируется:
$args = [
'post_type' => 'project'
];
$projects = new WP_Query($args);
Фильтр:
add_action('pre_get_posts', 'projects_filter');
function projects_filter($query){
if (!is_archive() || is_admin()){
return;
}
if ($query->is_main_query()){
global $wpdb;
$ids = [];
if (isset($_GET['material'])){
foreach ($_GET['material'] as $material){
$sql = $wpdb->prepare("SELECT post_id FROM {$wpdb->prefix}postmeta WHERE meta_key = 'materials' AND meta_value = '%s'", $material);
$ids = array_unique(array_merge($ids, $wpdb->get_col($sql)));
}
$query->set('post__in', $ids);
}
}
}
Если убрать проверку на is_main_query() - срабатывает (но, естественно, на всех запросах, на каких только может)
echo $query->is_main_query() === 1
Сломал мозг уже весь, помогите плз!