【问题标题】:How to get WordPress posts of custom post type by category in Python如何在 Python 中按类别获取自定义帖子类型的 WordPress 帖子
【发布时间】:2017-10-28 16:20:59
【问题描述】:

我正在关注文档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]}  }))

... 结果相同。我在这里不明白什么?

【问题讨论】:

    标签: python wordpress xml-rpc


    【解决方案1】:

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

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

    【讨论】:

    • 有趣,这是我的预感。谢谢你的提示。通过自己进行过滤器,您是否建议仅手动迭代一组检索到的帖子以获取我正在寻找的术语?对我来说,这似乎对服务器不友好,因为它需要检索(在我的用例中)数百个帖子才能找到一个正确的帖子。无论哪种方式,我都会考虑使用 Rest API。
    猜你喜欢
    • 2020-05-11
    • 1970-01-01
    • 1970-01-01
    • 2012-05-17
    • 2011-06-24
    • 2021-12-15
    • 1970-01-01
    • 2016-04-27
    • 2015-10-11
    相关资源
    最近更新 更多