如何在WP REST API响应中使用wp:featuredmedia?

时间:2018-08-17 06:54:53

标签: json wordpress wordpress-rest-api

我正在尝试从另一个WordPress网站获取博客文章,到目前为止,我已经成功获取了这些文章,并且使用以下代码段:

$response = wp_remote_get( add_query_arg( array(
    'per_page' => 1,
     'categories' => 38
     ), 'https://www.remotesite.com/wp-json/wp/v2/posts?_embed' ) 
);
if( !is_wp_error( $response ) && $response['response']['code'] == 200 ) {

   $remote_posts = json_decode( $response['body'] ); 
    foreach( $remote_posts as $remote_post ) {
    echo '<h2>'. $remote_post->title->rendered . '</h2>
           <p>' . $remote_post->excerpt->rendered . '</p>';     

   }
 }

使用上述代码,我可以获取所有必需的详细信息,标题,摘录和特色图片。但是,我很难找到如何从上述响应中获取“特色图片”网址。谁能告诉我如何从响应中使用wp:featuredmedia。我在下面的代码中看到了获取特色图片网址的地方,但这对我没有帮助:

echo [your-data]._embedded['wp:featuredmedia']['0'].source_url

1 个答案:

答案 0 :(得分:3)

根据您的代码,可以像这样检索特色图片网址:

$remote_post->_embedded->{'wp:featuredmedia'}[0]->source_url

但是,就是特色图片文件的完整版。

要获取特定缩略图尺寸的URL,可以从以下位置访问:

$remote_post->_embedded->{'wp:featuredmedia'}[0]->media_details->sizes

..是array数据中的object(除非您当然要在true函数的 second 参数中使用json_decode() )。

默认情况下,可用的缩略图大小为:thumbnailmediummedium_large。这是medium大小的示例:

$remote_post->_embedded->{'wp:featuredmedia'}[0]->media_details->sizes->medium->source_url

因此,请尝试以下foreach

foreach( $remote_posts as $remote_post ) {
    $thumb_full_url = '';
    $thumb_url = '';

    if ( ! empty( $remote_post->featured_media ) && isset( $remote_post->_embedded ) ) {
        $thumb_full_url = $remote_post->_embedded->{'wp:featuredmedia'}[0]->source_url;
        $thumb_url = $remote_post->_embedded->{'wp:featuredmedia'}[0]->media_details->sizes->medium->source_url;
    }

    echo '<h2>'. $remote_post->title->rendered . '</h2>' .
        '<p>' . $remote_post->excerpt->rendered . '</p>' .
        '<p>' .
            'Medium-sized thumbnail: ' . $thumb_url . '<br>' .
            'Full-sized / source: ' . $thumb_full_url .
        '</p>';
}