is_singular()用于pre_get_posts中的自定义帖子类型

时间:2015-03-31 21:03:53

标签: custom-post-type

我尝试修改特定帖子类型的查询,无论当前显示的是哪个页面(单个或存档)。我在此测试中使用了pre_get_posts过滤器:

if ( is_singular( 'evenement' ) || is_post_type_archive( 'evenement' ) ) {
    // do something
}

但是当我在单个is_singular页面上时,evenement条件标记似乎永远不会成立。

知道我错过了什么吗? 谢谢你的帮助。

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,并认为您无法在is_singular中使用pre_get_posts,因为此时未设置查询的对象。这有意义:查询尚未处理,is_singular如果正在显示帖子则返回true - 此时我们不知道查询是否返回任何结果,截至 _get_posts)。

您可以使用post_type查询参数,如下所示:

if($query->get('post_type') === 'evenement') {
    // ... do stuff
}

答案 1 :(得分:0)

您可以将'$ query-> is_singular'与post_type检查结合使用:

if ( $query->is_singular && $query->get('post_type') === 'your_post_type' ) {
    // your code
}

如果仅测试帖子类型,则还将修改对存档页面的查询。