WordPress 条件判断标签及用法大全

在 WordPress 主题和插件开发中,条件判断标签(Conditional Tags)是非常重要的,通过条件判断标签,我们可以判断各种情况,从而使用对应的代码等。例如在顶部导航条中有一个“首页”选项,在首页的时候需要设置成高亮,我们可以在头部导航模板文件(header.php)中使用条件判断标签 is_home() 来判断当前页面是不是首页,然后再输出高亮的 class。

这类的条件判断标签一般会返回一个布尔值,这样我们就可以使用 if 语句判断不同的页面不同的情况而分别使用不同的代码。

为了大家更加方便使用 WordPress 条件判断标签,我爱水煮鱼博客翻译了 WordPress 的官方文档 Conditional Tags,欢迎收藏本文以备用。

所有的条件判断标签

所有的条件判断标签都会判断某个条件是否成立,然后返回 True 或者 False 。此外有些条件判断标签还可以使用一些参数进一步的判断,下面是所有的 WordPress 条件判断标签:

主页面(Main)

is_home()

判断当前页面是否是博客主页面。主页面通常是显示博客内容列表的首页,但是如果你在“后台”->“设置”->“阅读”中设置了静态首页和文章索引页面的话,当访问文章索引页面是返回 True。

首页(Front)

is_front_page()

判断当前页面是否是博客首页。首页和上面的主页面不同,首页可以是文章索引页面,也可以是你在“后台”->“设置”->“阅读”中设置的静态首页。

后台控制面板(Administration Panels)

is_admin()

判断当前页面是否是后台的控制面板(Dashboard)。

文章页面(Single Post)

is_single()

判断当前页面是否是一篇文章或者是附件页面或者自定义文章类型页面。注意,WordPress 中文章(Single)和页面(Page)是不同的概念。这个条件判断标签可以附加参数。

is_single( ’17’ )

判断当前文章是否是 id 为 17 的文章。

is_single( ‘Irish Stew’ )

判断当前文章的标题是否是 “Irish Stew”。

is_single( ‘beef-stew’ )

判断当前文章的别名(Slug)是否为 “beef-stew”。

is_single( array( 17, ‘beef-stew’, ‘Irish Stew’ ) )

传递多个参数需要使用数组。上面条件判断标签判断满足 id 为 17 、别名为 beef-stew、标题为 Irish Stew 任意一个条件文章被访问时返回 True。

is_single( array( 17, 19, 1, 11 ) )

判断多个文章的 id,用法同上。

is_single( array( ‘beef-stew’, ‘pea-soup’, ‘chili’ ) )

判断多个文章的别名,用法同上。

is_single( array( ‘Beef Stew’, ‘Pea Soup’, ‘Chili’ ) )

判断多个文章的标题,用法同上。

注意:这个函数对于传递的参数,并无法很明确的判断参数究竟是 id、文章标题或者是文章别名,如果参数为 17,当 id 为 17 的文章会返回 True,当 Slug 为 17 的文章也会返回 True。

置顶文章(Sticky Post)

is_sticky()

WordPress 带有置顶文章的功能,使用这个标签判断是否为置顶文章,需要传递一个参数(通常为文章 id,用法同上)。如果不想传递参数,需要用在主循环(Loop)中,由主循环提供。通常的用法是在主循环输出文章索引列表的时候,使用 is_sticky() 判断当前文章是否为置顶文章,然后在置顶文章的 title 前面输出 “[置顶]” 之类的标志。

文章类型(Post Type)

get_post_type()

严格意义上,这并不是一个条件判断标签,它会返回当前文章注册的文章类型,并且可以通过类似 if ( ‘book’ == get_post_type() ) … 来实现判断文章类型的功能。

is_singular()

判断是否满足 is_single、is_page 和 is_attachment 的任意一个条件,满足返回 True。可以测试所有的文章类型。

post_type_exists()

判断某个文章类型是否被注册了,需要传递一个文章类型参数。它并不是测试某文章是否属于某个文章类型。

is_post_type_hierarchical( $post_type )

如果 $post_type 在注册的时候设置了支持层次( hierarchical support )返回 True。例如:is_post_type_hierarchical( ‘book’ ) 。

is_post_type_archive()

判断是否在任何的自定义文章类型存档页面(post type archive)。

is_post_type_archive( $post_type )

判断是否在 $post_type 中符合条件的文章类型存档页面,$post_type 可以是一个单一的文章类型或者是一个文章类型数组。提示:如果想要应用文章类型存档功能,需要在注册文章类型的时候,将 has_archive 参数设置为 True。

评论相关(Comments)

is_comments_popup()

判断是否在评论弹出框的窗口中。

comments_open()

判断评论功能是否开启,必须用在主循环中。

pings_open()

判断文章 ping 功能是否开启,必须用在主循环中。

判断页面(Page)

WordPress 中内置的有两种内容形式,一种是文章(Post)另一种是页面(Page),这里要判断的是页面,而不是指你网站的某个网页。

is_page()

判断当前页面是否为“页面”。

is_page( 42 )

判断当前页面是否是一个 ID 为 42 的页面。

is_page( ‘About Me And Joe’ )

判断当前页面是否是一个标题为 “About Me And Joe” 的页面。

is_page( ‘about-me’ )

判断当前页面是否是一个别名为 “about-me” 的页面。

is_page( array( 42, ‘about-me’, ‘Aout Me And Joe’ ) )

一次包含多种情况的判断,需要使用数组传递,用法同上。

判断内容分页

在文章和页面中,有时候内容很多,在文章中插入

人已赞赏
文章教程

WordPress站点简单两步完美启用HTTPS证书访问教程

2020-3-16 19:29:17

文章教程

网站更换服务器进行搬迁时该怎么做[运维教程]

2020-7-28 13:11:03

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索