大家好!我们又见面了!
上次了解了 WordPress 引入 JavaScript 和 CSS 的方式。有一些 JavaScript 只在一些页面有用,因此就需要判断一下当前页面是否需要。这就说到了 WordPress 中的条件标签。
在 WordPress 经典主题的代码中,条件标签是无处不在的。条件标签一般都和 PHP 中的 if/else 搭配使用。判断为真,就执行这一段代码;判断为假,就执行那一段代码。
比如,用户登录了,就显示欢迎语;用户未登录,就显示登录按钮。
if ( is_user_logged_in() ) :
echo '你好,追格的朋友!';
else :
echo '<button value="登录">';
endif;
需要注意的是,如果把这段代码直接放在 functions.php 中,是无法达到预期效果的。因为,functions.php 执行的很早,条件标签这些函数都还没有准备好(数据还没有从数据库取出来等)。
正确使用条件标签的方式有两种:
1. 直接在主题模板文件中使用
2. 在 functions.php 中定义一个函数,把这个函数挂在某个 WordPress 钩子中
说到 WordPress 钩子,又是一个非常重要的 WordPress 概念。我们后面也会单独一篇文章介绍 WordPress 钩子。现在,我们先一起看一下常见的条件标签。
主页的判断
is_home() 判断是否是文章页,常见的文章页就是按时间逆序排列的一个文章列表。
is_front_page() 判断是否是主页。
如果后台的配置如下:
那么文章页就是主页,is_home() 和 is_front_page() 是一样的。
如果选择了静态页面,那么只有在指定的主页中,is_front_page() 为真;只有在指定的文章页中,is_home() 为真。
是否在后台
is_admin()
当显示仪表板或管理面板时,此条件返回true。
文章页的判断
is_single()、is_page()、is_singular()
is_page() 当在【页面 page】的文章页面时为真;is_single() 当在非【页面 page】的文章页面时为真;is_singular() == is_single() || is_page(),即只要是文章详情页面,is_singular() 就为真;
是否是置顶文章
is_sticky()
如果选中了【置顶这篇文章】返回 true,否则返回 false。
文章类型相关
get_post_type(),获取文章的类型,默认的post,page等,以及用户通过 register_post_type() 函数自定义的文章类型。
post_type_exists(),检查是否已注册了某文章类型。
is_post_type_hierarchical(),判断文章类型的继承关系。
is_post_type_archive(),判断是否是某种类型的文章,支持继承关系。
评论相关
comments_open(),判断是否允许评论。
pings_open(),判断是否允许PING。
page 相关判断
is_page(),可以根据ID,标题,slug 等判断,是否是指定的页面。
文章分页判断,是否使用了 <!--nextpage--> QuickTag 进行分页,参考代码:
$paged = $wp_query->get( 'page' );
if ( ! $paged || $paged < 2 ) :
// 未分页
else :
// 分页了
endif;
is_page_template(),页面模板判断,检查当前页面用的是那个页面模板。
文章分类、标签相关
is_category(),是否是指定的分类页面。可根据ID,名称,slug等判断。is_tag() 和 is_tax() 与 is_category()类似。
has_tag(),判断当前文章是否有指定的标签。类似的还有 has_term()。
作者相关
is_author(),判断当前文章的作者。可根据ID,昵称等判断。
按日期文章归档页面判断
is_date()、is_year()、is_month()、is_day()、is_time()、is_new_day()等。
是否是文章归档页
is_archive()
是否是文章搜索页
is_search()
是否是 404 页面
is_404()
是否是隐私页
is_privacy_policy()
是否是附件页
is_attachment()
……
综上,在 WordPress 中条件标签的数量是比较多的。这也从侧面反映出 WordPress 的功能强大。对于这些条件标签没有必要去死记硬背,只需要记住:
在 WordPress 中,需要做判断时,就去找【条件标签】。
更多关于条件标签的介绍,可参考官方文档:
https://developer.wordpress.org/themes/basics/conditional-tags/
查看所有的条件标签,可以参考:
https://developer.wordpress.org/themes/references/list-of-conditional-tags/
明天就是假期了,又是一年芳草绿,春风拂袖清明祭。
我们下周再见!
暂无评论,抢个沙发...