Intereting Posts
Thumbnail With Next / Prev Links Не показывая следующую запись? Какое действие / фильтр / функция определяет «текущий» класс в меню WP Admin Преобразование основной модификации в плагин Ошибка: страница параметров не найдена Автоматическая активация плагина с уникальными настройками пользователя Использование orderby с 2 мета ключами Лучший способ изменить тип сообщения в блоге? Как я могу посчитать просмотры просмотров вызовов API REST и обновить их в поле ACF? Шаблоны исчезли из выпадающих списков Сохранить выбранный элемент из раскрывающегося меню в мета-окне в качестве значения метаданных для настраиваемого типа сообщения Удаление admin javascript Список всех боковых панелей WP_Cron скрипт не обновляет все сообщения в цикле Пользовательские правила перезаписи типа сообщений не работают, как изменить порядок перезаписи? Как удалить заголовок «оставить ответ» в поле комментариев в двадцать один?

Идентификаторы запросов и хранилища запросов в массиве

Я пытаюсь запросить продукты в WooCommerce и вернуть их идентификаторы в виде массива, который можно использовать для фильтрации условно. Я использую ACF Pro для добавления в продукт настраиваемых полей, для которых я использую условный код.

Я поговорил с моим другом-разработчиком, который предложил такой подход, который должен хранить массив в переменной $ ex_id или $ inc_id;

<?php query_posts( $args ); while ( have_posts() ) : the_post(); ?> <?php if( in_array( 'yes', get_field('exclude') ) ) { ?> <?php $ex_id[] = the_id() ;?> <?php } else if( in_array( 'yes', get_field('include') ) ) { ?> <?php $inc_id[] = the_id() ;?> <?php } ;?> <?php endwhile; wp_reset_query(); ?> 

Это не работает, поэтому я упростил условный код, чтобы найти, что возвращаемый идентификатор был идентификатором первой страницы;

 <?php query_posts(); while ( have_posts() ) : the_post(); ?> <?php the_id() ;?> <?php endwhile; wp_reset_query(); ?> 

Если я добавлю $ args (специально, 'post_type' => 'product', 'showposts' => -1), запрос будет работать, и вернутся правильные идентификаторы, только они будут напечатаны на экране.

Кто-нибудь знает, как я могу запросить и сохранить как переменную?

Solutions Collecting From Web of "Идентификаторы запросов и хранилища запросов в массиве"

Пара вещей – избегайте query_posts , используйте новый объект запроса или функцию get_posts ( читайте все об этом ). И the_ID() echo, вместо этого используйте get_the_ID() .

Тем не менее, вы можете сохранить некоторую память и обработку, просто перейдя по массиву сообщений (т. Е. Не используя правильный «цикл» и установив глобальную запись) и просто возьмите идентификатор напрямую:

 $product_posts = get_posts( array( 'posts_per_page' => -1, 'post_type' => 'product', ) ); $ex_id = $inc_id = array(); foreach ( $product_posts as $product_post ) { if ( in_array( 'yes', get_field( 'exclude', $product_post->ID ) ) ) $ex_id[] = $product_post->ID; elseif ( in_array( 'yes', get_field( 'include', $product_post->ID ) ) ) $inc_id[] = $product_post->ID; } 

Обратите внимание, как я get_field $product_post-ID в качестве второго аргумента get_field . Это связано с тем, что по умолчанию ACF будет использовать текущую «глобальную» запись, поэтому нам нужно сказать, какой почтой мы действительно хотим захватить данные.