答案有点晚,但有人可能会觉得它有用。
我对现有项目做了同样的事情。它由以下内容组成
- Wordpress'
XML-RPC APIs
-
XML-RPC.NET图书馆
-
Ajaxactionlink 加载更多帖子
- 缓存
Wordpress 的 XML-RPC API
看看 Wordpress 的XML-RPC APIs,这些允许您直接与您的 Wordpress 安装进行通信。您可以使用一整套方法,例如获取所有帖子、添加帖子等,通过修改一些 PHP 文件很容易添加您自己的方法。
你可以找到文档here
XML-RPC.NET 库
如果您过去做过 php,您可能会遇到过 XML-RPC,但对于 .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 here
加载更多帖子的 Ajax 操作链接
和你一样,我想动态加载帖子,所以我最终使用 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 个帖子(包括图片)非常快,但您应该考虑进行某种形式的缓存。我最终只使用标准的output cache attribute。
虽然我的解决方案不使用 iframe,但我认为它提供了更多的灵活性,因为您可以直接控制自己的数据。
希望这会有所帮助。