如何在Python中按类别获取自定义帖子类型的WordPress帖子

时间:2017-10-28 16:21:00

标签: python wordpress xml-rpc

我按照文档here按类别查询自定义帖子类型的WordPress帖子。 PHP的这个问题有答案,但我找不到Python的答案。除非我遗漏了某些内容,否则该功能无法按预期工作。如果我从以下开始:

from wordpress_xmlrpc import Client, WordPressPost
from wordpress_xmlrpc.methods.posts import GetPosts
from wordpress_xmlrpc.methods import posts
from wordpress_xmlrpc import WordPressTerm

wp = Client('http://www.mywebsite.info/xmlrpc.php', 'myusername', 'mypassword')

然后,这会成功返回相关类别的列表:

categories = wp.call(taxonomies.GetTerms('category'))

这会成功返回我尝试查询的自定义帖子类型的(前10个)帖子列表:

posts = wp.call(posts.GetPosts({ 'post_type': 'my-custom-post-type'  }))

但如果我添加以下内容:

posts = wp.call(posts.GetPosts({ 'post_type': 'my-custom-post-type', 'terms_names': { 'category' :['my-category',]}  }))

它仍然提供与没有' terms-names'的查询相同的结果。过滤器,好像附加术语完全被忽略了。实际上,如果我向查询添加不存在的类别,它会在不返回异常/错误的情况下提供相同的结果,例如:

posts = wp.call(posts.GetPosts({ 'post_type': 'my-custom-post-type', 'terms_names': { 'category' :['nonsense-word',]}  }))

我还尝试过其他方式,例如:

posts = wp.call(posts.GetPosts({ 'post_type': 'my-custom-post-type', 'terms': { 'category' :[72]}  }))

......结果相同。我在这里不理解什么?

1 个答案:

答案 0 :(得分:1)

如果你阅读了文档,它似乎没有提供任何复杂的查询示例。当我去GitHub回购时,我发现这是一些开发人员的个人项目,仅在WordPress 3.5上测试过(4.9现在即将推出),最后的提交似乎是2年前。 WordPress是用PHP编写的。我认为作者并没有遇到在Python中实现WP查询的全部功能的麻烦。如果可能的话,我会使用WordPress Rest API。

话虽如此,因为它确实允许您通过帖子类型检索,如果返回的帖子数据包含类别信息,您可以自己进行过滤。