在html页面上加载WordPress帖子

时间:2017-05-31 16:58:59

标签: javascript json wordpress rest reactjs

我正在尝试在静态html页面上加载WordPress之外的帖子。到目前为止,我有一个使用React,http://v2.wp-api.org/https://github.com/mzabriskie/axios的工作示例。这个使用react的工作示例目前正确显示帖子,但它很脆弱,没有后退。 Codepen示例,https://codepen.io/krogsgard/pen/NRBqPp/

我使用此示例来使用axios axios.get(this.props.source)获取Feed源。然后我使用示例react函数来获取我最近的三个帖子,包括标题和图像,并通过

将它们加载到静态html页面中
 render: function render() {
    return React.createElement(
        "div",
        { className: "post-wrapper" },
        this.state.posts.map(function (post) {
            return React.createElement(
                "div",
                { key: post.link, className: "post" },
                React.createElement(
                    "h2",
                    { className: "post-title" },
                    React.createElement("a", {
                        href: post.link,
                        dangerouslySetInnerHTML: { __html: post.title.rendered }
                    })
                ),
                post.featured_media ? React.createElement(
                    "a",
                    { href: post.link },
                    React.createElement("img", { src: post._embedded['wp:featuredmedia'][0].source_url })
                ) : null
            );
        })
    );
}

我的博客来源wp json是

React.render(React.createElement(App, { source: 
"myBlogURL.com/wp-json/wp/v2/posts/?_embed&per_page=3" }), 
document.querySelector("#blog-post"));

将我最新的3篇博文正确加载到<div id="blog-posts"> 我正在寻找一种香草js的方式与一些后备助手一起做这件事。如果我忘记将精选图片包含在帖子中,帖子将无法加载。非常感谢任何想法或例子!

1 个答案:

答案 0 :(得分:1)

你正努力为此努力。 Wordpress CMS专为此类设计而设计。您可以按类别,标签和其他taxonomies以RSS Feed的形式显示帖子。很容易

•如果您对代码不太满意,可以找到许多widgets来处理大部分工作。

•如果您需要自己动手,下面的内容应该是JSON / jQuery。

<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js'></script>
<script type="text/javascript">
var MYBLOG_LIMIT = 3;
var MYWRAPPER_CLASS = 'homeblog';

var WP={open:function(b){var a={posts:function(){var d=MYBLOG_LIMIT;var e=0;var c={all:function(g){var f=b+"/api/get_recent_posts/";f+="?count="+d+"&page="+e+"&callback=?";jQuery.getJSON(f,function(l){var k=l.posts;for(var j=0;j<k.length;j++){var h=k[j];h.createComment=function(i,m){i.postId=h.id;a.comments().create(i,m)}}g(k)})},findBySlug:function(f,h){var g=b+"/api/get_post/";g+="?slug="+f+"&callback=?";jQuery.getJSON(g,function(i){h(i.post)})},limit:function(f){d=f;return c},page:function(f){e=f;return c}};return c},pages:function(){var c={findBySlug:function(d,f){var e=b+"/api/get_page/";e+="?slug="+d+"&callback=?";jQuery.getJSON(e,function(g){f(g.page)})}};return c},categories:function(){var c={all:function(e){var d=b+"/api/get_category_index/";d+="?callback=?";jQuery.getJSON(d,function(f){e(f.categories)})}};return c},tags:function(){var c={all:function(e){var d=b+"/api/get_tag_index/";d+="?callback=?";jQuery.getJSON(d,function(f){e(f.tags)})}};return c},comments:function(){var c={create:function(f,e){var d=b+"/api/submit_comment/";d+="?post_id="+f.postId+"&name="+f.name+"&email="+f.email+"&content="+f.content+"&callback=?";jQuery.getJSON(d,function(g){e(g)})}};return c}};return a}};

var blog = WP.open('https://www.fldtrace.com');
blog.posts().all(function(posts){
  for(var i = 0; i < posts.length; i++){
    jQuery('.'+MYWRAPPER_CLASS).append(function(){
      return (posts[i].thumbnail) ? '<a class="lastpost_title" href="'+posts[i].url+'">
<h4>'+posts[i].title+'</h4>

</a><a href="'+posts[i].url+'"><img src="'+posts[i].thumbnail+'"/></a>' : '<a href="'+posts[i].url+'">
<h4>'+posts[i].title+'</h4>

</a>';

    });
  }
});
</script>
<div class="homeblog">
</div>
  

您需要配置下一个选项

     

var MYBLOG_LIMIT = 1;将定义将显示的帖子数量。默认情况下   是1. var MYWRAPPER_CLASS ='homeblog'; - HTML的类名   将显示帖子的元素。 var blog =   WP.open(“https://www.fldtrace.com/”); - 这应链接到您的博客   默认情况下,主域(必填)将显示帖子缩略图   和标题都有联系。其余的是CSS自定义,包括   调整缩略图大小。

在源文章中阅读更多here

相关问题