WP Rest API + AngularJS:如何抓住特色图片在页面上显示?

时间:2015-10-24 16:03:05

标签: angularjs wordpress rest wp-api

我通过HTTP REST API插件(这个wordpress插件:http://v2.wp-api.org/)访问Wordpress数据。我知道如何抓住我的帖子标题,但如何使用此插件显示与该帖子相关的精选图片?我的测试显示了帖子标题和特色图片ID,但我不确定如何显示实际图像。 Test Example

这是我的代码:

    <div ng-app="myApp">
    <div ng-controller="Ctrl">
        <div ng-repeat="post in posts | limitTo: 1">
            <h2 ng-bind-html="post.title.rendered"></h2>

            <p>{{ post.featured_image }}</p>

        </div>
    </div>
</div>


<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.15/angular-sanitize.min.js"></script>

<script>

var app = angular.module('myApp', ['ngSanitize']);
    app.controller('Ctrl', function($http, $scope) {
        $http.get("http://ogmda.com/wp/wp-json/wp/v2/posts").success(function(data) {
        $scope.posts = data;
    });
});

</script>

4 个答案:

答案 0 :(得分:6)

要获得精选图片回复,请在查询字符串中添加 _embed 。例如:

http://demo.wp-api.org/wp-json/wp/v2/posts/?_embed

然后,使用 _embedded ['wp:featuredmedia'] [0] .media_details.sizes.thumbnail.source_url

var app = angular.module('myApp', ['ngSanitize']);
    app.controller('Ctrl', function($http, $scope) {
        $http.get("http://ogmda.com/wp/wp-json/wp/v2/posts?_embed").success(function(data) {
        $scope.posts = data;

        var firstFeaturedImageUrl = $scope.posts[0]._embedded['wp:featuredmedia'][0].media_details.sizes.thumbnail.source_url;
    });
});

答案 1 :(得分:4)

更好的方法是将特色图像的URL集成到json响应中,以便在单个请求中完成所有操作。您可以添加以下代码(在your-theme / functions.php中)来实现此目的:

//Get image URL
function get_thumbnail_url($post){
    if(has_post_thumbnail($post['id'])){
        $imgArray = wp_get_attachment_image_src( get_post_thumbnail_id( $post['id'] ), 'full' ); // replace 'full' with 'thumbnail' to get a thumbnail
        $imgURL = $imgArray[0];
        return $imgURL;
    } else {
        return false;
    }
}
//integrate with WP-REST-API
function insert_thumbnail_url() {
     register_rest_field( 'post',
                          'featured_image',  //key-name in json response
                           array(
                             'get_callback'    => 'get_thumbnail_url',
                             'update_callback' => null,
                             'schema'          => null,
                             )
                         );
     }
//register action
add_action( 'rest_api_init', 'insert_thumbnail_url' );

然后在您看来,您可以使用 {{ post.featured_image }}

注意:要获得不同大小的相同图像,请使用接受任何有效图像大小的上述wp_get_attachment_image_src函数,或者以像素为单位的宽度和高度值数组作为其第二个参数

答案 2 :(得分:0)

我找到了一种非常简单的方法。

只需下载名为Better Rest API Featured Image的新Wordpress插件。此插件会在包含可用图片大小和网址的帖子对象中添加better_featured_image字段,以便您无需再发送第二个请求即可获取此信息。

答案 3 :(得分:0)

您可以使用此<p>{{ post.featured_image }}</p>

替换<img ng-src="{{post.better_featured_image.source_url}}" />