Возврат изображения из WP REST API

Я пытаюсь использовать 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>';
};
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
748
2

Ответы 2

Используйте этот тип кода

$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>';
};

Тогда дайте мне знать результат. Благодарить

Объясните, что вы изменили и почему это решит проблему.

CodeCaster 18.04.2018 12:33

Это устраняет ошибку, но не возвращает изображение. выведенный html для избранного изображения - <img src = ""/>

bigdave 18.04.2018 12:35

Привет! Основная часть вашей ошибки - $ 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.

Souvik Sikdar 18.04.2018 13:28

Я решил это сам, используя следующее:

$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 возвращает массив, а не объекты.

Я уверен, что есть более чистый способ сделать это, но пока я рад, что он работает.

Другие вопросы по теме