介绍
在模板文件中,我们可以根据能与某页面相匹配的条件,利用条件标签更改该页面上将要显示的内容以及内容的显示方式。例如,如果希望在博客首页文章列表的上方显示一段文字,可以利用 is_home() 条件标签轻松实现这一效果。
注:条件标签与WordPress模板层级(Template Hierarchy)密切相关。
警告:你只能在WordPress的文章选择(posts_selection)动作钩子的后面使用条件标签(WP动作钩子是第一位的,通过它可以使用这些条件语句)。对于主题来说,这意味着如果你将这些条件标签直接添加到 functions.php 文件的主体内(即在函数的外部),这些条件标签将不会正常工作。
来源于:
https://www.wpdaxue.com/conditional-tags.html
原网页下载:
条件
所有条件标签都会检查是否有条件可符合相应页面,之后返回TRUE或者FALSE。下面列出能够使各个条件标签返回TRUE的条件。
主页(The Main Page)
is_home()
显示博客首页时,该条件标签返回TRUE。注意:如果将静态页面作为博客主页(Front Page),该标签会在 设置 > 阅读 中设置的“文章页(Posts page)”返回TRUE。
首页(The Front Page)
is_front_page()
显示博客头版消息(无论是日志或是页面)。当系统显示博客主页且管理面板的 设置 > 阅读 菜单下“主页显示为”选项设为最近发表的文章”,或者 设置 > 阅读 菜单下“主页显示为”选项设为且"主页"是当前被显示的页面时,is_front_page()标签返回TRUE。
管理面板
is_admin()
显示仪表盘或后台管理面板时,该标签返回TRUE。
单篇日志页面
is_single()
显示任何单独一篇日志时,is_single()标签返回TRUE。
is_single(’17’)
显示 ID 为17的单篇日志时,该标签返回TRUE。
is_single(‘Irish Stew’)
显示标题为"Irish Stew"的单篇日志时,该标签返回TRUE。
is_single(‘beef-stew’)
显示别名为"beef-stew"的单篇日志时,该标签返回TRUE。
is_single(array(17,’beef-stew’,’Irish Stew’))
当所显示的单篇日志 ID 为17,或 post_name 为"beef-stew",或 post_title 为"Irish Stew"时,is_single(array(17,’beef-stew’,’Irish Stew’))标签返回TRUE。
is_single( array( 17, 19, 1, 11 ) )
当所显示的日志为 ID = 17,ID = 19, ID = 1 或者 ID = 11 时,该标签返回TRUE。
is_single( array( ‘beef-stew’, ‘pea-soup’, ‘chili’ ) )
当显示的单篇日志的 post_name 为 "beef-stew" 、 "pea-soup" 或 "chili" 时,该标签返回 TRUE。
is_single( array( ‘Beef Stew’, ‘Pea Soup’, ‘Chili’ ) )
当显示的单篇日志的 the post_title 为 "Beef Stew" 、"Pea Soup" 或 "Chili"时,该标签返回 TRUE。
注: 该函数不区分 post ID、 post title 或 post name。如果请求的是 ID 为 17 的文章,post_name 为 17 的文章也会返回 TRUE;post title 为 17 的日志也一样返回TRUE。
置顶文章
is_sticky()
若当前日志的"Stick this post to the front page(将该日志在首页置顶)"复选框被选中,is_sticky()返回TRUE。此时标签没有提供日志的ID变量,因此系统会用到WordPress主循环the Loop的日志ID。
is_sticky(’17’)
若ID为17的日志被置顶,该标签返回TRUE。
文章类型
get_post_type()
它不算一个真正的条件标签,但将返回当前文章的已注册的文章类型。例如:if ( ‘book’ == get_post_type() ) …
将返回文章类型为 ‘book’ 的文章。
is_singular()
任何单篇日志、页面 或附件 都会返回 TRUE。 它允许用于文章类型的检测。
post_type_exists()
如果所给的文章类型是一个已注册的文章类型,就返回TRUE。它不会测试WordPress默认的文章类型。
文章类型层级
is_post_type_hierarchical( $post_type )
如果 $post_type 在注册的时候就已被设置 支持层级(Hierarchical),就返回 TRUE。
is_post_type_hierarchical( ‘book’ )
如果 book 这种文章类型在注册的时候就已被设置 支持层级,就返回TRUE。
文章类型存档
is_post_type_archive()
任何文章类型存档页面,都返回TRUE。
is_post_type_archive( $post_type )
如果文章类型存档页面为 指定的 $post_type (可以是一种文章类型或一组文章类型),就返回TRUE。
要开启文章类型存档,请在注册文章类型时,使用 ‘has_archive’ => true 。
评论弹出式窗口
is_comments_popup()
显示的内容在评论弹出式窗口中时,该标签返回TRUE。
comments_open()
若评论允许当前日志在WordPress主循环中运行,该标签返回TRUE。
pings_open()
若引用通告ping允许当前日志在WordPress主循环中运行,该标签返回TRUE。
PAGE 页面
这里的PAGE指的是WordPress的“页面”功能,而不是博客生成的网页。
is_page()
显示任何一篇页面时,该标签返回TRUE。
is_page(’42’)
显示ID为42的页面时,该标签返回TRUE。
is_page(‘About Me And Joe’)
若显示的页面的post_name为"About Me And Joe",该标签返回TRUE。
is_page(‘about-me’)
若显示的页面的post_name(别名)为"about-me",该标签返回TRUE。
is_page(array(42,’about-me’,’About Me And Joe’))
当所显示的页面 ID 为42,或post_name为"about-me",或post_title为"About Me And Joe"时,is_page(array(42,’about-me’,’About Me And Joe’))标签返回TRUE。
is_page( array( 42, 54, 6 ) )
当页面的 ID 为 42、 54 或 6 时,改标签返回TRUE。
分页
你可以使用这个代码来检测是否一篇 日志 或 PAGE页面 被 <!–nextpage–> 标签进行了分页。这是非常有用的,例如你只想在划分为多页的 日志 的第一页中显示 meta-data 。