Нет представленных медиа в запросе API

Вопрос или проблема

Когда я делаю запрос к http://localhost/wordpress/wp-json/wp/v2/posts/?_embed&categories=${categoryId}&per_page=${state.perPage}

Я получаю следующий результат

[                                                                                                            
  {
    id: 3,
    date: '2019-04-20T16:10:00',
    date_gmt: '2019-04-20T16:10:00',
    guid: {
      rendered: 'http://localhost/wordpress/?p=3'
    },
    modified: '2019-04-20T16:36:30',
    modified_gmt: '2019-04-20T16:36:30',
    slug: 'slug-title',
    status: 'publish',
    type: 'post',
    link: 'http://localhost/wordpress/2019/04/20/slug-title/',
    title: {
      rendered: 'title'
    },
    content: {
      rendered: '\n<figure class="wp-block-image"><img ' +
        'src="http://localhost/wordpress/wp-content/uploads/2019/04/sirius.jpg" ' +
        'alt="" class="wp-image-4" ' +
        'srcset="http://localhost/wordpress/wp-content/uploads/2019/04/sirius.jpg ' +
        '370w, ' +
        'http://localhost/wordpress/wp-content/uploads/2019/04/sirius-217x300.jpg ' +
        '217w"  ' +
        '/></figure>\n',
      protected: false
    },
    excerpt: {
      rendered: '',
      protected: false
    },
    author: 1,
    featured_media: 0,
    comment_status: 'open',
    ping_status: 'open',
    sticky: false,
    template: '',
    format: 'standard',
    meta: [],
    categories: [
      3
    ],
    tags: [],
    _links: {
      self: [Array],
      collection: [Array],
      about: [Array],
      author: [Array],
      replies: [Array],
      'version-history': [Array],
      'predecessor-version': [Array],
      'wp:attachment': [Array],
      'wp:term': [Array],
      curies: [Array]
    },
    _embedded: {
      author: [Array],
      'wp:term': [Array]
    }
  }
]

Но, как вы видите, нет featured_media. У меня есть недопонимание относительно featured_media? Я создал свой пост с изображением, как вы можете видеть в content.rendered

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

Например: я написал это на PHP, вы можете загрузить это на другой хост и отображать изображения веб-сайта WordPress, который вы указали в URL-переменной на этих хостах.

$url="url вашего веб-сайта wordpress";
function Json_Data_Decoder($query){     
    global $url;
    $json = file_get_contents($url.'/wp-json/wp/v2/'. $query);
    $data = json_decode($json);
    return $data;
}
function Get_Media($post_media){
    global $url;
    $json = file_get_contents($url.'/wp-json/wp/v2/media?include=".$post_media);
    $medias = json_decode($json);
    $featured_image = $medias[0]->media_details->sizes->medium->source_url;
    return $featured_image;
}

$posts = Json_Data_Decoder("posts');
foreach ($posts as $post){
    
    // получить медиа 
    $post_media = $post->featured_media;
    $featured_image = Get_media($post_media);
    
    echo 
    '<article class="post image">
            <img src="'.
                $featured_image .
            '">
    </article>';
}

.

Ответ или решение

Почему в вашем API-запросе нет отмеченного медиа-контента?

Введение

При работе с REST API WordPress бывает важно правильно настраивать функционал для работы с изображениями и медиа-контентом. В вашем случае запрос к API возвращает данные о постах, но поле featured_media равно 0. Это может вызвать замешательство, особенно если в посте есть изображение, однако это не обязательно означает, что у вас все правильно настроено.

Поле featured_media в ответе на ваш запрос возвращает 0, что указывает на то, что для поста не установлено ключевое изображение. В WordPress вы можете добавлять изображения в посты несколькими способами, но для корректного заполнения поля featured_media необходимо явно назначить изображение как "изображение записи".

Давайте рассмотрим, как можно изменить это:

  1. Установите изображение записи: При создании или редактировании поста в WordPress необходимо установить изображение записи вручную. Это можно сделать через интерфейс администратора, выбрав нужное изображение в медиабиблиотеке и нажав "Задать изображение записи".

  2. Проверка значения featured_media: Убедитесь, что после установки изображений вы запрашиваете API. Если значение featured_media все еще равно 0, убедитесь, что вы действительно установили медиа как изображение записи.

Пример установки изображения записи с помощью PHP

Если вы работаете с программным обеспечением, и вам необходимо автоматизировать процесс, ниже приведен пример кода на PHP, который может помочь:

$post_id = 3; // ID вашего поста
$media_id = 4; // ID медиа-контента (изображения) в медиабиблиотеке

set_post_thumbnail($post_id, $media_id);

Этот код устанавливает изображение записи для поста с указанным ID.

Пример получения изображения записи через API

Если вы уже установили изображение записи, вы сможете получать данные о медиа с помощью следующего (измененного) кода:

function Get_Media($post_media) {
    global $url;
    $json = file_get_contents($url.'/wp-json/wp/v2/media?include=' . $post_media);
    $medias = json_decode($json);
    if (!empty($medias)) {
        return $medias[0]->media_details->sizes->medium->source_url;
    }
    return null; // Возвращаем null, если медиа нет
}

$posts = Json_Data_Decoder("posts");
foreach ($posts as $post){
    $post_media = $post->featured_media;
    $featured_image = Get_Media($post_media);

    if ($featured_image) {
        echo '<article class="post image"><img src="' . $featured_image . '" alt=""></article>';
    } else {
        echo '<article class="post"><p>Изображение отсутствует</p></article>';
    }
}

Заключение

Отсутствие featured_media в ответе API не является ошибкой в коде, а скорее указывает на то, что медиа-файл не был задан как изображение записи. Убедитесь, что все настройки выполнены правильно, и попробуйте снова.

Будучи в курсе этих нюансов, вы сможете более эффективно взаимодействовать с WordPress API и управлять медиа-контентом, что непременно повысит качество вашего контента и пользовательский опыт.

Оцените материал
Добавить комментарий

Капча загружается...