如何添加WP API和JS特色图片附件

时间:2019-05-20 作者:Roga Men

I would like to fetch the image from the wordpress rest api - I have the following code: HTML:

<div class="post-item">
   <div id="posts">Loading posts...
</div>

Ajax script:

<script type="text/javascript">
    $(document).ready(function () {
        $.ajax({
            type: \'GET\',
            url: \'https://mysite.io/blog/wp-json/wp/v2/posts?_embed&per_page=3\',            

            success: function (data) {
                var posts_html = \'\';
                $.each(data, function (index, post) {

                  posts_html += \'<div class="post-item-image">\';
                  posts_html += \'<a href="\' + post.source_url + \'"></a>\';
                  posts_html += \'<img src="\' + + \'"</div>\';
                  posts_html += \'<div class="post-item-header">\';
                  posts_html += \'<span class="date">\' + post.date + \'</span>\';
                  posts_html += \'<span class="user">\';
                  posts_html += \'<a href="\' + post.link +\'">\';
                  posts_html += \'<img src="https://mysite.io/images/users/mysite-1548344709.jpg">Mysites</a></span></div>\';
                  posts_html += \'<div class="post-item-body">\';
                  posts_html += \'<a href="\' + post.link + \'" style="text-decoration: underline;"> \'+ post.title.rendered + \'</a>\';
                  posts_html += \'<div class="post-short-text"> \' + post.excerpt.rendered + \'</div></div>\';
                });
                $(\'#posts\').html(posts_html);
            },
            error: function (request, status, error) {
                alert(error);
            }
        });
    });
</script>   

The problem is with wp:featuredmedia... this line:

posts_html += \'<a href="\' + post.source_url + \'"></a>\';

I tried also tried, but no luck so far

posts_html += \'<a href="\' + post.embed["wp:featuredmedia"][0].media_details.sizes.full.source_url + \'"></a>\';

Any advices?

1 个回复
SO网友:Roga Men

我设法解决了这个问题,将此代码(在底部)添加到您的博客主题我的路径:wp content/THEMES/twentythetic/function。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,
    );
}
希望这对别人有帮助。

相关推荐

如何将JQuery加载到Head标记之上

我的网站和插件在HTML标记之间插入了一些jquery代码,而且无论我做什么,都会在标题部分插入jquery作为第一个脚本,我无法让它工作我试过了function use_jquery_from_google () { if (is_admin()) { return; } global $wp_scripts; if (isset($wp_scripts->registered[\'jquery\']