Я пытаюсь использовать api wp rest, чтобы вернуть список сообщений из блога, включая заголовок, отрывок и избранное изображение. Используя приведенное ниже, я могу вернуть заголовок и отрывок, но показанное изображение вызывает Неустранимая ошибка: невозможно использовать объект типа stdClass как массив.
Может кто посоветует, что делаю не так?
$posts = json_decode(file_get_contents('https://wordpressurl/wp-json/wp/v2/posts?_embed'));
foreach ( $posts as $post )
{
echo '<a href = "'.$post->link.'">
<img src = "'.$post->_embedded['wp:featuredmedia']['0'].source_url.'"/>
'.$post->title->rendered, $post->excerpt->rendered.'</a>';
};






Используйте этот тип кода
$posts = json_decode(file_get_contents('http://localhost/sikkimpwd-apis/wp-json/wp/v2/posts?_embed'));
foreach ( $posts as $post ) {
//get attached image id
$attach_id = get_post_thumbnail_id($post->id );
//get image src from attached id
$image_src = wp_get_attachment_image_src($attach_id,'full')[0];
echo '<a href = "'.$post->link.'"><img src = "'.$image_src.'"/> '.$post->title->rendered, $post->excerpt->rendered.'</a>';
};
Тогда дайте мне знать результат. Благодарить
Это устраняет ошибку, но не возвращает изображение. выведенный html для избранного изображения - <img src = ""/>
Привет! Основная часть вашей ошибки - $ post -> _ embedded ['wp: Featuremedia'] ['0']. Source_url. Итак, сначала я собираю идентификатор прикрепленного изображения сообщения из этого get_post_thumbnail_id ($ post-> id), затем собираю URL этого изображения из идентификатора прикрепленного изображения wp_get_attachment_image_src ($ attach_id, 'full') [0]. Затем я использовал его в поле img src.
Я решил это сам, используя следующее:
$posts = json_decode(file_get_contents('http://wordpressurl/wp-json/wp/v2/posts?_embed'), true);
foreach ( $posts as $post ) {
echo '<a href = "'.$post[link].'">
<img src = "'.$post[_embedded]['wp:featuredmedia']['0'][source_url].'"/>
'.$post[title][rendered], $post[excerpt][rendered].'</a>';
};
Добавление true к json_decode возвращает массив, а не объекты.
Я уверен, что есть более чистый способ сделать это, но пока я рад, что он работает.
Объясните, что вы изменили и почему это решит проблему.