为什么‘EXCLUDE_FROM_SEARCH’从WP_QUERY中排除自定义帖子类型?

时间:2011-05-25 作者:danblaker

在WP 3.1中,似乎设置\'exclude_from_search\' = TRUE 对于自定义帖子类型,不仅从前端的搜索中排除帖子类型,而且从使用\'post_type\' = \'all\'.

我可以想象很多情况下,插件开发人员希望访问所有帖子类型,甚至是那些被排除在前端搜索之外的帖子类型。这是一个bug,还是只是文档记录不足?

背景故事:我有一个自定义的帖子类型,使用自定义的“帖子到期日期”字段。为了自动取消发布过期的自定义帖子,我创建了一个内容过期插件,该插件使用wp\\u schedule\\u event()定期取消发布帖子,其中“帖子过期日期”<;今天只要我指定了自定义的帖子类型,它就工作得很好,但当我试图通过设置\'post_type\' = \'all\' 在WP\\u查询参数中。原来问题是自定义帖子类型的“exclude\\u from\\u search”参数。以下是WP\\U查询类中的相关代码:

$exclude_post_types = \'\';
$in_search_post_types = get_post_types( array(\'exclude_from_search\' => false) );
if ( ! empty( $in_search_post_types ) )
  $exclude_post_types .= $wpdb->prepare(" AND $wpdb->posts.post_type IN (\'" . join("\', \'", $in_search_post_types ) . "\')");

if ( \'any\' == $post_type ) {
  $where .= $exclude_post_types;
}

1 个回复
SO网友:Jan Fabry

这很难回答-您要求我们了解编写此代码的WP开发人员的想法:-)

他们可能认为,您需要查询所有类型帖子的唯一地方是在您进行搜索时,因此他们这样命名。

可以在法典中更清楚地记录。Codex是一个wiki,所以您可以自己添加它!

结束