扩展Wordpress XML-RPC以包括自定义帖子类型和分类

时间:2011-10-12 00:38:40

标签: wordpress xml-rpc

我正在尝试插入一个自定义帖子类型的帖子,我也想附加自定义分类法。大多数可用的补丁都过时,只适用于“xmlrpc.php”。现在,控制该功能的wordpress中的文件是“class-wp-xmlrpc-server.php”。有人可以就如何剖析文件给我建议吗?我更愿意在我的主题文件中添加一个过滤器,而不是覆盖Wordpress核心文件。

1 个答案:

答案 0 :(得分:0)

我意识到这是一个古老的话题,但在过去的几周里我一直想知道同样的事情并完全改写了一些文件来处理我需要它做的事情。对于我的实现,我有一个名为“博客”的自定义帖子类型,其自定义分类法称为“blog_categories”和“blog_tags”。有点多余,是的,​​但这是一个实验。

如果你看一下class-wp-xmlrpc-server.php,你会发现它有点乱(取决于你使用它的WP的版本可能更好或更糟)。我发现在不破坏任何事情的情况下最简单的方法是继续将分类法功能更改为通用功能而不是类别并发布特定功能。这包括查找wp_get_post_categorieswp_get_post_tags的所有实例,并将其替换为更通用的wp_get_object_terms,并将get_categories替换为get_terms。使用categoriestags作为分类法后,您可以执行以下两项操作之一:

  1. 在我的情况下,XML-RPC只需要像默认一样工作,除了将post更改为blogcategories更改为blog_categories等等。我只是替换了文字我的新XML-RPC允许我像平常一样使用Live Writer,但它会使用我的自定义帖子类型和分类法。
  2. 如果您需要可用于处理多种帖子类型和分类的函数,则需要深入挖掘并重写函数(理想情况下,重写它们以使用0-n分类法和任何帖子类型)。如果要使用Live Writer等现有软件,请考虑向后兼容性。还要考虑功能 - 如果您有自定义帖子类型的自定义角色,那么您应该考虑用以下内容替换功能检查:user_can('edit'_.$post_type, $postid)
  3. 可悲的是,Wordpress是1个帖子类型,2个帖子类型(页面),n个帖子类型(自定义)进化模型的受害者,而XML-RPC并没有像系统其他部分那样得到更多的爱。你可以调查一些过滤器/操作挂钩,但我认为你只需要修改核心文件就可以了。 这意味着您的修改将在核心更新中被覆盖!

    希望这对你和其他任何想要做同样事情的人有所帮助!