我尝试修改特定帖子类型的查询,无论当前显示的是哪个页面(单个或存档)。我在此测试中使用了pre_get_posts
过滤器:
if ( is_singular( 'evenement' ) || is_post_type_archive( 'evenement' ) ) {
// do something
}
但是当我在单个is_singular
页面上时,evenement
条件标记似乎永远不会成立。
知道我错过了什么吗? 谢谢你的帮助。
答案 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
}
如果仅测试帖子类型,则还将修改对存档页面的查询。