如何在WordPress插件中判断当前是否为post_type page的分类归档页
原因说明
is_category() 属于WordPress的条件标签,依赖已初始化完成的全局主查询才能返回正确结果。插件的加载时机早于WordPress主查询初始化流程,直接在插件全局作用域调用该方法必然返回错误值,并非该方法仅能在主题中使用。
实现方案
将判断逻辑挂载到主查询初始化完成的钩子(如template_redirect、wp)中执行即可,示例代码如下:
// 挂载到template_redirect钩子,此时路由解析、主查询均已完成 add_action('template_redirect', 'custom_check_category_archive'); function custom_check_category_archive() { // 同时判断:当前为分类归档页,且归档对应的文章类型为page if (is_category() && get_queried_object()->post_type === 'page') { // 替换为你需要执行的业务逻辑 do_this(); } }
补充说明
- 如果你要判断的是自定义分类法的归档页,将
is_category()替换为is_tax('你的自定义分类法别名')即可 - 所有WordPress前端条件标签在插件中调用时,都需要挂载到上述后置钩子上才能正常生效
- 也可以直接读取全局主查询属性
$GLOBALS['wp_query']->is_category进行判断,返回值和is_category()完全一致

内容的提问来源于stack exchange,提问作者Nadal
相关产品推荐
相关产品推荐

