在REST API中获取图像URL而不是附件ID

时间:2017-06-27 作者:Amar Ilindra

我想在我的Android应用程序中显示最近的帖子,我正在起诉这个端点以获得帖子列表https://www.geekdashboard.com/wp-json/wp/v2/posts

如何获取特色图片的完整URL而不是其id?

"featured_media": 39913,
我不想使用任何插件,是否可以使用函数。php?

2 个回复
最合适的回答,由SO网友:ville6000 整理而成

您可以在主题函数中修改REST API响应。php就是这样。

function ws_register_images_field() {
    register_rest_field( 
        \'post\',
        \'images\',
        array(
            \'get_callback\'    => \'ws_get_images_urls\',
            \'update_callback\' => null,
            \'schema\'          => null,
        )
    );
}

add_action( \'rest_api_init\', \'ws_register_images_field\' );

function ws_get_images_urls( $object, $field_name, $request ) {
    $medium = wp_get_attachment_image_src( get_post_thumbnail_id( $object->id ), \'medium\' );
    $medium_url = $medium[\'0\'];

    $large = wp_get_attachment_image_src( get_post_thumbnail_id( $object->id ), \'large\' );
    $large_url = $large[\'0\'];

    return array(
        \'medium\' => $medium_url,
        \'large\'  => $large_url,
    );
}
如果无法修改REST API响应,可以请求如下媒体信息curl http://your-site.com/wp-json/wp/v2/media/<id>

SO网友:The Billionaire Guy

修改@ville6000示例,我能够解决自己的问题,

    add_action( \'rest_api_init\', \'ws_register_images_field\' );
function ws_register_images_field() {
    register_rest_field( 
        \'post\', //custom post name
        \'attachment_url_images\', //array name of your choice
        array(
            \'get_callback\'    => \'ws_get_images_urls\',
            \'update_callback\' => null,
            \'schema\'          => null,
        )
    );
}


function ws_get_images_urls( $object, $field_name, $request ) {

  $custom_fields = get_post_custom($object[\'id\']);
  $main_image = $custom_fields[\'your_custom_images_array_name\'];
  $image_urls = array();

  foreach ( $main_image as $key => $value ) {
      $imagesID = explode(\',\' ,$value);
      foreach ($imagesID as $id => $value) {
        $image_urls[ $key ] = wp_get_attachment_url($value);
        //$custom_fields[ $id ] = $image_urls;
      }
  };

     return $image_urls;
   //return count($main_image);
}
添加到主题功能。phpHappy编码。。。

结束

相关推荐

创建用于拉取json数组的短代码

坦率地说,这可能是我的另一个问题的重复。如果是的话,我很抱歉。我正在学习这个网站和PHP/Wordpress开发。我与使用JSON的本地网站有合作关系,我们正在合作。但他们不是Wordpress专家。我想从这个url中提取我朋友称之为JSON的对象:http://aggrenda.com/mpellas/michael-pellas/events.json我正在尝试创建一个可以将数据解析为预定帖子的短代码。我有具体的日期、地址、描述(和其他)数据。我一直在phpfiddle使用我的PHP。org和已成功。