WordPress主题开发教程 9_条件标签

江河/ 05月20日/ WordPress/ 浏览 658

大家好!我们又见面了!


上次了解了 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/


明天就是假期了,又是一年芳草绿,春风拂袖清明祭。


我们下周再见!



发表评论

暂无评论,抢个沙发...

客服 工单