【问题标题】:How to get all posts except posts that belong to specific post type Wordpress?如何获取除属于特定帖子类型 Wordpress 的帖子之外的所有帖子?
【发布时间】:2017-03-02 09:20:02
【问题描述】:

例如,我通过register_post_type()函数在我的主题中注册了3个帖子类型(或更多):

  • 议程
  • 下载
  • 产品

现在我想获取所有不属于Product 帖子类型的帖子(帖子、页面、议程、下载的所有帖子)。

我不想使用'post_type' => array('post','page','agenda','download'),因为将来我可能会注册更多的帖子类型。

帖子类型没有与'category__not_in' 等效的参数吗?

【问题讨论】:

  • 显示您的代码?到目前为止,您尝试了什么?你在使用 WP_Query 吗?
  • @yivi 现在我正在编写用于自动生成数据测试的插件。我在我的主题中使用 ACF。在这种情况下,我必须检测 ACF 显示的帖子类型。我将在下面尝试您的评论。谢谢。

标签: php wordpress


【解决方案1】:

我不确定正在尝试的是一个好主意,但你可以这样做:

首先,你get all the existing post_types:

$post_types = get_post_types(['public' => true]);

然后,您从该数组中删除您不想查询的帖子类型:

$excluded_posttypes = ['product'];
$post_types         = array_diff($post_types, $excluded_posttypes);

然后您将其用作 WP_Query 调用的参数:

'post_type' => $post_types,

【讨论】:

  • 谢谢。我会尝试这种方式。
  • @Mít 有用吗?如果它解决了您的问题,请记住接受答案。 :)
【解决方案2】:

也许你会需要这个:https://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts

有一个排除类别的示例,也许这适用于帖子类型。

如果上面的钩子无法实现,您可以在构建查询之前尝试以下操作:

  1. 收集您网站中的所有帖子类型:https://codex.wordpress.org/Function_Reference/get_post_types
  2. 将它们放在一个数组中,这样您就可以在查询中将其用于“post_type”选项
  3. 从数组中删除要排除的帖子类型

这样每个新注册的帖子类型都将包含在查询中。请注意,默认的 WP 帖子类型“posts”也将在 get_post_types 函数中返回。

【讨论】:

  • 感谢您的回复。您对第一条评论有相同的想法,所以我会尝试两个^^
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-27
相关资源
最近更新 更多