Мне кажется плохим методом вызывать 5 полей ACF, а затем объединять их в массив во время создания страницы.
Для меня этот метод лучше:
1. Создайте текстовое поле AСF - hide_excluir
2. Добавьте фильтр в functions.php (При редактировании нашей страницы все поля ACF с исключениями будут объединены в массив и сохранены в поле, которое мы создали ранее).
add_filter('acf/save_post', 'excluir_post_filter', 20);
function excluir_post_filter($post_id) {
if ( $post_id != 2 ) //Change to your page ID (or if you need use post type or page template, need modify)
return;
$excluir = get_field('bloque_6_posts');
$excluir2 = get_field('bloque_2_posts');
$excluir3 = get_field('post_destacado');
$excluir4 = get_field('posts_destacados');
$excluir5 = get_field('bloque_4_posts');
$all_excluir = array_merge(
$excluir,
$excluir2,
$excluir3,
$excluir4,
$excluir5
);
update_post_meta($post_id, 'hide_excluir', $all_excluir ); //Save array to our field
}
3. Мы используем наше поле с get_post_meta
$paged = (get_query_var('page')) ? get_query_var('page') : 1;
$args = array(
'posts_per_page' => 9,
'paged' => $paged,
'post__not_in' => get_post_meta( $post->ID, 'hide_excluir', true ) //Get our field with post array
);
$the_query = new WP_Query( $args );
Для методов тестирования вы можете установить плагин Query Monitor и увидеть разницу в количестве запросов к базе данных.