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

У меня есть эта часть кода, которую я вызываю в цикле, чтобы получить метаданные изображения (название / подпись и описание). Он работает нормально, но работает только для первого сообщения в цикле. Поэтому я предполагаю, что его нужно сбросить. От взгляда здесь я думаю 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; } 

Solutions Collecting From Web of "Как правильно восстановить исходные данные"

При использовании 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. Контекст, в котором вы вызываете функцию