我按照文档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]} }))
......结果相同。我在这里不理解什么?
答案 0 :(得分:1)
如果你阅读了文档,它似乎没有提供任何复杂的查询示例。当我去GitHub回购时,我发现这是一些开发人员的个人项目,仅在WordPress 3.5上测试过(4.9现在即将推出),最后的提交似乎是2年前。 WordPress是用PHP编写的。我认为作者并没有遇到在Python中实现WP查询的全部功能的麻烦。如果可能的话,我会使用WordPress Rest API。
话虽如此,因为它确实允许您通过帖子类型检索,如果返回的帖子数据包含类别信息,您可以自己进行过滤。