Intereting Posts
Пример wp_set_post_terms? get_template_part не выводит все данные Как проверить с is_page, если загружено 404.php? Активированный плагин хранится как объект, а не как путь Как правильно дезинфицировать / защищать запрос WP, поступающий с передней стороны Автоматически извлекать новые сообщения и добавлять к текущей странице. Динамический список сообщений (настраиваемый заказ), виджет / фрагмент кода Поиск с использованием идентификатора сообщения Страницы, которые не похожи на сообщения в блоге? Как стиль RSS wordpress? WP Movie Library автоматически добавляет трейлеры Связать страницу с конкретным шаблоном одной записи? wp_get_post_terms в пользовательском типе сообщений с пользовательскими таксономиями, возвращающими пустой массив Получать данные из пользовательского типа сообщений в другой настраиваемый тип сообщения? Создать алфавитную разбивку на страницы для пользовательской таксономии?

Как правильно восстановить исходные данные

У меня есть эта часть кода, которую я вызываю в цикле, чтобы получить метаданные изображения (название / подпись и описание). Он работает нормально, но работает только для первого сообщения в цикле. Поэтому я предполагаю, что его нужно сбросить. От взгляда здесь я думаю wp_rest_postdata(); это правильный способ сбросить запрос, но все же вывод не удался для всех, кроме первого сообщения, он повторяет данные из первого сообщения для каждой другой записи.

 function get_image_metadata() { $image_id = get_post_thumbnail_id($post->ID); $args = array( 'post_type' => 'attachment', 'post_status' => null, 'post_parent' => $post->ID, 'include' => $image_id ); $image_data = get_posts($args); if ($image_data && isset($image_data[0])) { $meta_output['title'] = $image_data[0]->post_title; $meta_output['caption'] = $image_data[0]->post_excerpt; $meta_output['description'] = $image_data[0]->post_content; } //wp_reset_query(); wp_rest_postdata(); return $meta_output; } 

При использовании get_posts() вы фактически не get_posts() почтовые данные, если не делаете этого явно, через setup_postdata() внутри цикла (обычно для foreach ).

Поэтому, поскольку вы не создаете данные для публикации, вам не нужно перезагружать данные для публикации.

но все же выход не удался для всех, кроме первого сообщения

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

 $image_id = get_post_thumbnail_id($post->ID); $args = array( 'post_type' => 'attachment', 'post_status' => null, 'post_parent' => $post->ID, 'include' => $image_id ); $image_data = get_posts($args); 

Попробуйте добавить global $post; перед использованием $post->ID :

 global $post; $image_id = get_post_thumbnail_id($post->ID); $args = array( 'post_type' => 'attachment', 'post_status' => null, 'post_parent' => $post->ID, 'include' => $image_id ); $image_data = get_posts($args); 

Если это не проблема, вы можете уточнить:

  1. Какие данные вы получаете из $iamge_data
  2. Контекст, в котором вы вызываете функцию