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

问题描述:

我正在关注文档here以按类别查询自定义帖子类型的WordPress帖子。 PHP的这个问题有答案,但是我没有找到Python的答案。除非我错过了某些东西,否则该功能无法按预期工作。如果我开始用下面的:如何在Python中按类别获取自定义帖子类型的WordPress帖子

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',]} })) 

它仍然给出与没有“条件名称”过滤器的查询相同的结果,就好像该附加条款完全被忽略了一样。事实上,如果我添加不存在的类别来查询,它使没有返回异常/错误相同的结果,如:

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]} })) 

...具有相同的结果。我在这里不了解什么?

如果您阅读文档,它似乎没有给出任何复杂的查询示例。当我访问GitHub仓库时,我发现这是一些开发人员的个人项目,这些项目仅在WordPress 3.5上测试完毕(4.9即将推出),而最后一次提交似乎是2年前。 WordPress是用PHP编写的。我认为作者没有经历在Python中实现WP查询的全部功能的麻烦。如果可能,我会使用WordPress Rest API。

这就是说,因为它确实可以让您通过发布类型进行检索,所以如果返回的发布数据包含类别信息,您可以自己执行过滤。

+1

有趣的是,这是我的直觉。谢谢你的提示。通过自己做过滤器,您是否建议只是针对我要查找的术语手动迭代一组检索到的帖子?对我来说,这似乎对服务器不友好,因为它需要检索(在我的用例中)数百个帖子才能找到一个正确的帖子。无论哪种方式,我会考虑使用Rest API。 – NFB