0

我正在尝试将 wordpress 博客嵌入到我们网站的页面中。但是,实际的博客不会每页显示 10 个帖子;当您向下滚动时,它会不断增长,也就是。没完没了。

我尝试将高度设置为大量,或将其设置为自动,但都无济于事。有任何想法吗?

<iframe src="http://myblog.wordpress.com/" width="100%" height="50000" scrolling="no"></iframe>
4

1 回答 1

1

答案有点晚,但有人可能会觉得它很有用。

我对现有项目做了同样的事情。它由以下内容组成

  1. WordPressXML-RPC API
  2. XML-RPC.NET图书馆
  3. Ajax加载更多帖子的操作链接
  4. 缓存

Wordpress 的 XML-RPC API

看看 WordpressXML-RPC API的,这些允许您直接与您的 Wordpress 安装进行通信。您可以使用一整套方法,例如获取所有帖子、添加帖子等,通过修改一些PHP文件来添加您自己的方法非常容易。

你可以在这里找到文档

XML-RPC.NET 库

XML-RPC如果您过去做过 php,您可能会遇到过,但它通常对.NET开发人员来说并不常见。所以为了让生活更轻松,我最终使用了 Charles Cook 的XML-RPC.NET图书馆。这个方便的库创建远程调用,甚至反序列化响应。

这是我获取帖子的代码

public interface IWordPress : IXmlRpcProxy 
{

    [XmlRpcMethod("wp.getPosts")]
    Post[] GetPosts(int blog_id, string username, string password, PostFilter filter);

}


public class PostFilter
{
    //Ignore the first...
    public string offset { get; set; }
    //Bring back this many posts
    public int number { get; set;
}


public struct Post
{
    public string post_id { get; set; }
    public string post_title { get; set; }
    public string post_status { get; set; }
    public DateTime post_date { get; set; }
    public string post_content { get; set; }
    public string post_author { get; set; }

}

确保属性名称与 Wordpress API 文档中概述的名称匹配,否则它们将不会映射。

你可以在这里找到 XML-RPC.NET

Ajax actionlink 加载更多帖子

和你一样,我想动态加载帖子,所以我最终使用Ajax Actionlink向我的控制器创建异步请求,这反过来又调用了 Wordpress API。

这是我的代码

@Ajax.ActionLink("Load more posts!", "action", "controller", 
    new { offset = Model.Offset },                  
    new AjaxOptions
    {
        InsertionMode = InsertionMode.InsertAfter, 
        UpdateTargetId = "post-items",
        OnSuccess = "loadItemsSucccess",
        OnBegin = "loadItemsBegin"
    }, null)

如您所见,我正在传递我们传递给 wp.getposts 方法的偏移值。它告诉 wordpress api 忽略第一个 x 数量。您只需要在帖子出现时不断更改此值。

缓存

一般来说,一次加载 9 个帖子非常快,包括图片,但您应该考虑进行某种形式的缓存。我最终只使用了标准输出缓存属性

虽然我的解决方案不使用 iframe,但我认为它提供了更多的灵活性,因为您可以直接控制您的数据。

希望这可以帮助。

于 2014-04-16T15:32:44.727 回答