Intereting Posts
Прекратите превращать маленькие тире в более длинные Результат поиска постоянная ссылка Multisite, отключить "создать новый сайт" Строка в выдержке и не более 5 строк Как переместить форму комментариев над списком комментариев в wordpress Custom-Posttype & Custom таксономия WP_Query Добавление настраиваемого мета-поля для клиента для заказа сообщений CPT, как они хотят Добавление поддержки языка с использованием файлов .pot и .mo в WordPress Theme? Дайте постоянную ссылку на пользовательские типы сообщений без заголовка Нежелательные повторяющиеся категории продуктов в WooCommerce Загрузка изображений после загрузки страницы Показать содержимое только на главной странице? Получайте постоянную ссылку в цикле, но без дополнительного запроса БД Преобразование настраиваемых полей для публикации категорий обнаруживать, когда пользовательский пост создается в первый раз

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

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