Intereting Posts
Как получить статус публикации доступных сообщений? NGINX conf на WP Multisite enabled – подкаталог – изображения не загружаются после обновлений preg_replace () Без конечного разделителя '.' найдено Запрос для пользовательских объектов типа сообщения в таксономии и с метазначением Выбор нескольких пользовательских классов TinyMCE Перенаправить текущего пользователя на свой последний пользовательский пост WordPress get_pages sub nav показать текущую страницу последние сообщения для разных категорий Установка значения настраиваемого поля при достижении даты истечения срока действия Показывать персонализированный случайный случай на любой странице Image Прикрепления массива в Flexslider Как настроить the_content для создания стиля списка сообщений Пространство в атрибуте WordPress, вызывающее проблемы Как использовать номер мобильного телефона вместо электронной почты отключить отдельный домен

Как выполнить цикл WordPress, вызванный функцией фильтрации?

Поэтому я пытаюсь заполнить поле выбора расширенных пользовательских полей с помощью сложного массива, основанного на некоторых пост-данных. Я пытался сделать это, выполнив пользовательский запрос и прокручивая возвращаемые сообщения.

К сожалению, петля, похоже, возвращается с приседанием. В моей тестовой установке должно быть возвращено 10 сообщений. Однако var_dump в приведенном ниже заявлении возвращает NULL 10 раз. Установка get_post($post) внутри цикла вернет первый результат для каждого экземпляра.

var_dump , var_dump ing $hw_selectbox_query вернет, казалось бы, правильный объект, поэтому определенно проблема с самим циклом, не определяющим объект $post . Я мог бы запустить цикл foreach через возвращаемый запрос, но это не похоже на правильный способ сделать это.

FWIW, эта функция отлично работает при размещении на пустой странице интерфейса.

 function populate_selectbox_field( $field ){ $field['choices'] = array(); $hw_selectbox_args = array( post_type => 'custom_post_type', orderby => 'title', order => 'ASC', posts_per_page => -1 ); $hw_selectbox_query = new WP_Query($hw_selectbox_args); if ( $hw_selectbox_query->have_posts() ) : while ( $hw_selectbox_query->have_posts() ) : $hw_selectbox_query->the_post(); var_dump($post); $field['choices'][$post->ID] = $post->post_title // Do more complicated stuff in real life endwhile; endif; return $field; } add_filter('acf/load_field/name=destination_node', 'populate_destination_node_field'); 

При использовании пользовательского запроса, чтобы получить доступ к информации о $post , вам нужно указать post как переменную класса пользовательский WP_Query.

Поскольку вы построили запрос как:
$hw_selectbox_query = new WP_Query($hw_selectbox_args);

Затем вы получите доступ к переменной post $hw_selectbox_query , например:

 var_dump($hw_selectbox_query->post); 

Это даст вам информацию, необходимую / хотите построить массив $field .