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

tos*_*sca 1 custom-post-type

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

if ( is_singular( 'evenement' ) || is_post_type_archive( 'evenement' ) ) {
    // do something
}
Run Code Online (Sandbox Code Playgroud)

但当is_singular我在一个页面上时,条件标签似乎永远不会成立evenement

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

var*_*ard 6

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

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

if($query->get('post_type') === 'evenement') {
    // ... do stuff
}
Run Code Online (Sandbox Code Playgroud)