wordpress的常用核心条件判断函数和使用方法、使用场景
以下是 WordPress 中这些核心条件判断函数的简短介绍、使用方法和典型使用场景,所有说明均以新手友好为原则,兼顾实用性和易理解性:
1. is_author()
- 介绍:判断当前页面是否为「作者归档页」(展示某作者所有文章的页面)。
- 使用方法:
// 无参数:判断是否为任意作者归档页 if (is_author()) { echo '这是作者归档页'; } // 带参数:判断是否为指定作者(支持 ID/昵称/用户名) if (is_author(123) || is_author('zhangsan')) { echo '这是ID为123或用户名为zhangsan的作者归档页'; } - 使用场景:为特定作者的归档页自定义样式(如显示作者简介)、过滤作者页面的文章列表。
2. is_blog_admin()
- 介绍:判断当前访问的是否为「站点后台」(区别于网络管理后台 / 用户后台)。
- 使用方法:
if (is_blog_admin()) { echo '当前在站点后台(wp-admin)'; } - 使用场景:仅在站点后台加载自定义脚本 / 样式,或限制某些功能仅在站点后台显示。
3. is_category()
- 介绍:判断当前页面是否为「分类归档页」(展示某分类下所有文章的页面)。
- 使用方法:
// 无参数:任意分类归档页 if (is_category()) { echo '这是分类归档页'; } // 带参数:指定分类(支持 ID/别名/名称) if (is_category(5) || is_category('tech') || is_category('科技')) { echo '这是ID为5/别名为tech/名称为科技的分类归档页'; } - 使用场景:为不同分类页设置不同标题、侧边栏,或在分类页显示分类描述。
4. is_comment_feed()
- 介绍:判断当前请求是否为「评论 RSS 订阅源」(如
/comments/feed/)。 - 使用方法:
if (is_comment_feed()) { echo '这是评论的RSS订阅页'; } - 使用场景:自定义评论 RSS 内容(如添加额外字段),或禁止评论 feed 输出。
5. is_customize_preview()
- 介绍:判断当前页面是否为「自定义器预览模式」(后台「外观→自定义」的实时预览页)。
- 使用方法:
if (is_customize_preview()) { echo '当前在自定义器预览模式'; } - 使用场景:仅在自定义预览时加载调试样式,或为自定义器添加临时提示。
6. is_date()
- 介绍:判断当前页面是否为「日期归档页」(年 / 月 / 日归档的通用判断,包含 is_year ()/is_month ()/is_day ())。
- 使用方法:
if (is_date()) { echo '这是日期归档页(年/月/日)'; } - 使用场景:为所有日期归档页统一添加「按时间浏览」标题,或调整日期归档的文章排序。
7. is_day()
- 介绍:判断当前页面是否为「按日归档页」(如
/2024/03/08/)。 - 使用方法:
if (is_day()) { echo '这是按日归档页'; } - 使用场景:在日归档页显示「今日文章汇总」,或限制日归档最多显示 10 篇文章。
8. is_embed()
- 介绍:判断当前页面是否为「嵌入式内容页」(WordPress 文章 / 页面被外部网站嵌入时的独立页面)。
- 使用方法:
if (is_embed()) { echo '这是嵌入式内容页'; } - 使用场景:自定义嵌入页面的样式(如隐藏广告、简化排版),或禁止特定内容被嵌入。
9. is_favicon()
- 介绍:判断当前请求是否为「网站图标(favicon.ico)」的请求。
- 使用方法:
if (is_favicon()) { echo '当前请求的是网站图标'; } - 使用场景:自定义 favicon 的返回逻辑(如根据不同设备返回不同图标),或记录 favicon 请求日志。
10. is_feed()
- 介绍:判断当前请求是否为「RSS/Atom 订阅源」(包含文章 feed、评论 feed 等所有 feed 类型)。
- 使用方法:
// 无参数:任意feed if (is_feed()) { echo '这是订阅源页面'; } // 带参数:指定feed类型(如 rss2、atom) if (is_feed('rss2')) { echo '这是RSS2.0订阅源'; } - 使用场景:自定义 feed 内容(如添加文章缩略图),或限制 feed 只显示摘要。
11. is_front_page()
- 介绍:判断当前页面是否为「网站首页」(WordPress 设置的「首页」,无论首页是静态页面还是最新文章)。
- 使用方法:
if (is_front_page()) { echo '这是网站首页'; } - 使用场景:首页加载轮播图、自定义首页侧边栏,或仅在首页显示欢迎语。
12. is_home()
- 介绍:判断当前页面是否为「博客文章列表页」(WordPress 设置的「最新文章」页面,若首页设为静态页,则 is_home () 对应文章列表页)。
- 使用方法:
if (is_home()) { echo '这是博客文章列表页'; } - 使用场景:在文章列表页显示分类导航,或调整文章列表的分页数量。
13. is_login()
- 介绍:判断当前页面是否为「WordPress 登录 / 注册 / 找回密码页」(wp-login.php)。
- 使用方法:
if (is_login()) { echo '这是登录相关页面'; } - 使用场景:自定义登录页样式(如替换登录 logo),或限制特定 IP 访问登录页。
14. is_month()
- 介绍:判断当前页面是否为「按月归档页」(如
/2024/03/)。 - 使用方法:
if (is_month()) { echo '这是按月归档页'; } - 使用场景:在月归档页显示「本月热门文章」,或按月份统计文章阅读量。
15. is_network_admin()
- 介绍:判断当前页面是否为「多站点网络管理后台」(仅 WordPress 多站点模式下有效)。
- 使用方法:
if (is_network_admin()) { echo '当前在多站点网络管理后台'; } - 使用场景:仅在网络后台加载多站点专属功能,或限制普通管理员访问网络后台。
16. is_page()
- 介绍:判断当前页面是否为「静态页面(Page)」(区别于文章 Post)。
- 使用方法:
// 无参数:任意静态页面 if (is_page()) { echo '这是静态页面'; } // 带参数:指定页面(支持 ID/别名/标题) if (is_page(10) || is_page('about') || is_page('关于我们')) { echo '这是ID为10/别名为about/标题为关于我们的静态页面'; } - 使用场景:为特定页面(如关于我们)加载专属样式,或在联系页面显示表单。
17. is_page_template()
- 介绍:判断当前静态页面是否使用了「指定的自定义页面模板」。
- 使用方法:
// 模板文件名为 template-contact.php if (is_page_template('template-contact.php')) { echo '当前页面使用了联系页模板'; } // 判断是否使用了任意自定义模板(非默认模板) if (is_page_template()) { echo '当前页面使用了自定义模板'; } - 使用场景:为使用特定模板的页面加载对应脚本(如联系模板加载表单验证脚本)。
18. is_paged()
- 介绍:判断当前页面是否为「分页页」(如文章列表第 2 页、分类页第 3 页等)。
- 使用方法:
if (is_paged()) { echo '这是分页后的页面(非第一页)'; } - 使用场景:分页页隐藏广告、简化标题,或限制分页页的 SEO 内容(如不显示 H1 标题)。
19. is_post_type_archive()
- 介绍:判断当前页面是否为「自定义文章类型(CPT)的归档页」。
- 使用方法:
// 无参数:任意自定义文章类型归档 if (is_post_type_archive()) { echo '这是自定义文章类型归档页'; } // 带参数:指定自定义文章类型(如 book) if (is_post_type_archive('book')) { echo '这是书籍自定义文章类型的归档页'; } - 使用场景:为自定义文章类型(如产品、课程)的归档页设置专属布局。
20. is_preview()
- 介绍:判断当前是否为「文章 / 页面的预览模式」(编辑时点击「预览」查看的页面)。
- 使用方法:
if (is_preview()) { echo '当前在文章预览模式'; } - 使用场景:预览模式下显示「预览中」水印,或隐藏预览页的统计代码。
21. is_privacy_policy()
- 介绍:判断当前页面是否为 WordPress 「隐私政策页」(后台设置的隐私政策页面)。
- 使用方法:
if (is_privacy_policy()) { echo '这是隐私政策页面'; } - 使用场景:在隐私政策页添加 cookie 说明,或隐藏该页面的分享按钮。
22. is_robots()
- 介绍:判断当前请求是否为「robots.txt」文件(搜索引擎抓取规则文件)。
- 使用方法:
if (is_robots()) { echo '当前请求的是robots.txt'; } - 使用场景:动态生成 robots.txt 内容(如根据环境屏蔽不同目录)。
23. is_rtl()
- 介绍:判断当前网站是否启用「从右到左(RTL)」的语言(如阿拉伯语、希伯来语)。
- 使用方法:
if (is_rtl()) { echo '网站使用从右到左的语言'; } - 使用场景:为 RTL 语言加载反向排版样式,调整菜单 / 按钮的位置。
24. is_search()
- 介绍:判断当前页面是否为「搜索结果页」。
- 使用方法:
if (is_search()) { echo '这是搜索结果页,搜索关键词:' . get_search_query(); } - 使用场景:显示搜索关键词、优化搜索结果样式,或无结果时显示推荐内容。
25. is_single()
- 介绍:判断当前页面是否为「单篇文章页」(Post 类型,区别于 Page)。
- 使用方法:
// 无参数:任意单篇文章 if (is_single()) { echo '这是单篇文章页'; } // 带参数:指定文章(ID/别名/标题)或指定文章类型 if (is_single(100) || is_single('tech-article') || is_single(array('post', 'book'))) { echo '指定文章/文章类型的单页'; } - 使用场景:单文章页显示相关推荐、点赞按钮,或隐藏分类导航。
26. is_singular()
- 介绍:判断当前页面是否为「单条内容页」(包含单篇文章、静态页面、自定义文章类型的单页,即 is_single () + is_page () + is_attachment ())。
- 使用方法:
// 无参数:任意单条内容页 if (is_singular()) { echo '这是单条内容页'; } // 带参数:指定文章类型(如 post、book) if (is_singular('book')) { echo '这是书籍自定义文章类型的单页'; } - 使用场景:为所有单页统一加载评论脚本,或添加面包屑导航。
27. is_sticky()
- 介绍:判断当前文章是否为「置顶文章」(仅在循环内 / 单文章页有效)。
- 使用方法:
// 在文章循环内使用 if (have_posts()) { while (have_posts()) { the_post(); if (is_sticky()) { echo '这是置顶文章'; } } } - 使用场景:置顶文章添加「置顶」标签,或调整置顶文章的排序 / 样式。
28. is_tag()
- 介绍:判断当前页面是否为「标签归档页」(展示某标签下所有文章的页面)。
- 使用方法:
// 无参数:任意标签归档 if (is_tag()) { echo '这是标签归档页'; } // 带参数:指定标签(ID/别名/名称) if (is_tag(8) || is_tag('php') || is_tag('PHP教程')) { echo '指定标签的归档页'; } - 使用场景:标签页显示标签描述,或为热门标签页添加推荐文章。
29. is_tax()
- 介绍:判断当前页面是否为「自定义分类法(Taxonomy)的归档页」(包含分类、标签及自定义分类法)。
- 使用方法:
// 无参数:任意自定义分类法归档 if (is_tax()) { echo '这是自定义分类法归档页'; } // 带参数:指定分类法+分类项 if (is_tax('genre', 'action')) { // genre为自定义分类法,action为分类项 echo '动作类别的自定义分类归档页'; } - 使用场景:为自定义分类法(如产品分类、影片类型)的归档页设置专属样式。
30. is_time()
- 介绍:判断当前页面是否为「按小时 / 分钟等更细粒度的时间归档页」(比 is_day () 更细,如
/2024/03/08/10/)。 - 使用方法:
if (is_time()) { echo '这是按小时/分钟的时间归档页'; } - 使用场景:精细化时间归档页的内容展示,如按小时统计文章发布量。
31. is_trackback()
- 介绍:判断当前请求是否为「引用通告(Trackback)」请求(外部网站引用本站文章时的通知请求)。
- 使用方法:
if (is_trackback()) { echo '当前是引用通告请求'; } - 使用场景:过滤垃圾引用通告,或记录引用通告来源。
32. is_user_admin()
- 介绍:判断当前页面是否为「用户个人后台」(wp-admin/user/ 路径,用户编辑个人资料的页面)。
- 使用方法:
if (is_user_admin()) { echo '当前在用户个人后台'; } - 使用场景:仅在用户后台显示个人资料修改提示,或隐藏不必要的用户设置项。
33. is_year()
- 介绍:判断当前页面是否为「按年归档页」(如
/2024/)。 - 使用方法:
if (is_year()) { echo '这是按年归档页'; } - 使用场景:年归档页显示「年度文章汇总」,或按年份统计阅读量。
34. is_404()
- 介绍:判断当前页面是否为「404 错误页」(页面不存在)。
- 使用方法:
if (is_404()) { echo '页面不存在(404)'; } - 使用场景:自定义 404 页面内容(如搜索框、热门推荐),或记录 404 错误日志。
35. is_ssl()
- 介绍:判断当前页面是否通过「HTTPS(SSL)」协议访问。
- 使用方法:
if (is_ssl()) { echo '当前使用HTTPS加密访问'; } else { // 跳转到HTTPS(可选) wp_redirect('https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 301); exit; } - 使用场景:强制 HTTPS 访问、加载 HTTPS 版本的资源(如图片、脚本)。
36. is_admin()
功能介绍:
判断当前执行环境是否为 WordPress 后台管理界面(wp-admin 目录下的页面),比如仪表盘、文章编辑页、插件设置页等。
- 返回
true:当前在后台(wp-admin) - 返回
false:当前在前台(网站访客看到的页面)
使用方法:
// 基础用法
if (is_admin()) {
// 仅在后台执行的代码
echo "这是WordPress后台页面";
} else {
// 仅在前台执行的代码
echo "这是网站前台页面";
}
// 实际开发示例:仅在后台加载自定义样式/脚本
function load_admin_custom_assets() {
if (is_admin()) {
// 加载后台专属CSS
wp_enqueue_style('admin-custom-style', get_template_directory_uri() . '/css/admin-style.css');
}
}
add_action('admin_enqueue_scripts', 'load_admin_custom_assets');
使用场景:
- 仅在后台加载特定的脚本 / 样式(避免前台冗余加载);
- 后台专属功能开发(比如自定义字段、后台菜单);
- 区分前后台执行逻辑(比如日志记录、数据处理)。
37. is_archive()
功能介绍:
判断当前页面是否为 WordPress 归档页(汇总类页面),归档页包含:
- 分类页、标签页、作者页;
- 日期归档页(按年 / 月 / 日归档);
- 自定义分类 / 自定义文章类型的归档页;
- 不包含:首页、单篇文章页、页面(Page)、搜索结果页。
使用方法:
// 基础用法
if (is_archive()) {
// 仅在归档页执行的代码
echo "这是归档页面(分类/标签/作者/日期等)";
// 可结合更细分的归档判断(比如仅分类页)
if (is_category()) {
echo "这是分类归档页";
} elseif (is_tag()) {
echo "这是标签归档页";
}
}
// 实际开发示例:归档页自定义标题
function custom_archive_title($title) {
if (is_archive()) {
return "归档汇总:" . $title; // 给所有归档页标题加前缀
}
return $title;
}
add_filter('get_the_archive_title', 'custom_archive_title');
使用场景:
- 为归档页定制不同的模板样式(比如归档页显示不同的布局);
- 归档页专属的内容展示(比如分类页显示分类描述,标签页显示标签说明);
- 控制归档页的侧边栏 / 广告展示。
38. is_attachment()
功能介绍:
判断当前页面是否为 WordPress 附件页(单独展示媒体文件的页面,比如点击图片 / 视频后跳转到的独立页面)。
- 附件包括:图片、视频、音频、文档等上传到媒体库的文件;
- 每个附件都有独立的 permalink(永久链接),对应一个单独的页面。
使用方法:
// 基础用法
if (is_attachment()) {
// 仅在附件页执行的代码
echo "这是媒体文件的独立展示页";
// 获取附件对应的父文章ID(如果附件关联了文章)
$parent_post_id = wp_get_post_parent_id(get_the_ID());
if ($parent_post_id) {
echo "该附件所属文章:" . get_the_title($parent_post_id);
}
}
// 实际开发示例:隐藏附件页的侧边栏
function hide_sidebar_on_attachment() {
if (is_attachment()) {
remove_action('genesis_sidebar', 'genesis_do_sidebar'); // 以Genesis框架为例
}
}
add_action('template_redirect', 'hide_sidebar_on_attachment');
使用场景:
- 自定义附件页模板(比如仅显示图片 + 下载按钮,隐藏多余元素);
- 禁止搜索引擎索引附件页(避免重复内容);
- 附件页添加专属功能(比如图片下载、图片 EXIF 信息展示);
- 跳转过载页到原始媒体文件(避免用户看到单独的附件页)。
总结
- 核心逻辑:这些函数均返回布尔值(true/false),主要用于主题模板(如 header.php、archive.php)中判断当前页面类型,实现「不同页面展示不同内容 / 样式」。
- 参数规则:多数函数支持无参数(判断任意)、单参数(指定 ID / 别名 / 名称)或数组参数(指定多个),需注意
is_sticky()仅在文章循环内有效。 - 使用时机:需在 WordPress 「模板加载阶段」使用(不能在主题 functions.php 顶部直接用,需挂钩
template_redirect/wp等动作),否则可能返回错误结果。