WordPress条件标签(Conditional Tags)

简洁的摘要。

介绍

在模板文件中,我们可以根据能与某页面相匹配的条件,利用条件标签更改该页面上将要显示的内容以及内容的显示方式。例如,如果希望在博客首页文章列表的上方显示一段文字,可以利用 is_home() 条件标签轻松实现这一效果。

:条件标签与WordPress模板层级(Template Hierarchy)密切相关。

警告:你只能在WordPress的文章选择(posts_selection)动作钩子的后面使用条件标签(WP动作钩子是第一位的,通过它可以使用这些条件语句)。对于主题来说,这意味着如果你将这些条件标签直接添加到 functions.php 文件的主体内(即在函数的外部),这些条件标签将不会正常工作。

来源于:

WordPress条件标签(Conditional Tags)

原网页下载:

当前内容已被隐藏,您需要登录才能查看

条件

所有条件标签都会检查是否有条件可符合相应页面,之后返回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 。

因主题原因,在示例代码中,有部分
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论