语言文字:
英语•法国•意大利•日本語
蒂尔库塞•葡萄牙人做巴西•中文(笑声)•(添加您的语言)
介绍
可以在模板文件中使用条件标记来更改显示的内容以及该内容在特定页面上的显示方式,具体取决于条件该页面匹配。例如,您可能希望在一系列文章的上方显示一段文本,但只能在博客的主页上显示。使用is_home()条件标记,这项任务变得很容易。
注意这些标签与WordPress的密切关系模板层次结构.
警告:只能在帖子_选择 活动钩在WordPress中(水处理动作钩子是第一个可以使用这些条件的钩子)。对于主题,这意味着如果您在functions.php的主体(即函数外部)中使用条件标记,它将永远无法正常工作。
然而:如果您引用查询对象(例如,从解析查询或预获取支柱hooks),您可以使用WP_Query条件方法(例如:$query->is_search()
)
……的条件。。。
所有条件标记测试以查看是否满足特定条件,然后返回TRUE或FALSE。下面列出了各种标签输出TRUE的条件。可以接受参数的标签已注明。
主页面
- is_home()
- 显示博客主页时。这是一个显示站点基于时间的博客内容的页面,因此如果您为首页设置了一个静态页面(参见下文),那么这只会在您在中设置为“帖子页面”的页面上发生管理>设置>阅读.
头版
- is_front_page()
- 当显示站点的前端时,无论是帖子还是第页。当显示主博客页面并且“设置>阅读->“首页显示”设置为“您的最新帖子”,或何时'设置>阅读->“Front page displays”设置为“A static page”,“Front page”值为当前值第页正在显示。
博客页面
- is_front_page()和is主页()
博客页面没有条件标记。你必须同时使用is_home()和is_front_page()检测此页面,但这些功能可能会被滥用。事实上,用户可以为主页定义一个静态页面,也可以为显示博客定义另一个页面。这个会回来的真的具有is主页()功能,即使它不是主页。以下是用户可以定义的内容:
- 默认主页(包含最新帖子)
- 静态主页,没有博客页面
- 静态主页和博客页面
当您使用is_home()和is_front_page(),您必须按照正确的顺序使用它们,以避免错误并测试每个用户配置:
if(is_front_page()&&is_home()){//默认主页}elseif(is_front_page()){//静态主页}elseif(is_home()){//博客页面}其他{//其他一切}
管理面板
- is_admin()
- 显示仪表板或管理面板时。
- is_network_admin()
- 显示多站点的网络仪表板或网络管理面板时。
敬告:该wp-login.php型页面不是管理页面。要检查是否显示此页面,请使用admin全局变量 $pagenow(美元).
管理栏
- is_admin_bar_showing()
- 退换商品真的如果将显示管理栏。
注释:若要显示或不显示此栏,请使用show_admin_bar(),应立即调用此函数加载的插件或放置在主题的函数.php文件。
一个帖子页面
- 大小写()
- 显示任何帖子类型(附件和页面帖子类型除外)的单个帖子时。
- 是单一的('17')
- 当帖子17被显示为单个帖子时。
- is_single(“爱尔兰炖菜”)
- 当标题为“爱尔兰炖菜”的帖子显示为单个帖子时。
- is_single(“炖牛肉”)
- 当Post with Post Slug“beef-stew”显示为单个Post时。
- is_single(数组(17,‘炖牛肉’,‘爱尔兰炖菜’)
- 当显示的单个帖子是帖子ID 17或帖子名称是“炖牛肉”,还是标题(_T)是“爱尔兰炖菜”。
- is_single(数组(17,19,1,11))
- 当显示的单个帖子为帖子ID=17,帖子ID=19,帖子ID=1或帖子ID=11
- is_single(数组(“炖牛肉”、“豌豆汤”、“辣椒”)
- 当显示的单个帖子为帖子名称“炖牛肉”,帖子名称“pea-soup”或帖子名称“辣椒”。
- is_single(数组(“炖牛肉”、“豌豆汤”、“辣椒”)
- 当显示的单个帖子为标题(_T)是“炖牛肉”,标题(_T)是“豌豆汤”还是职务(_T)是“辣椒”。
注意:此函数不区分帖子ID、帖子标题或帖子名称。如果请求帖子ID为17,则会显示一个名为“17”的帖子。大概同样适用于弹头为“17”的帖子。
粘帖
- is_sticky()
- 如果选中当前帖子的“将此帖子粘贴到首页”复选框,则返回true。在这个示例中,没有给出postID参数,因此循环使用post。
- 是粘滞('17')
- 当Post 17被视为粘性帖子时,返回true。
帖子类型是分层的
- is_post_type_hierarchical($post_type)
- 如果此$post_type已用设置,则返回true注册时的分层支持.
- is_post_type_hierarchical(“书本”)
- 如果书籍帖子类型已注册为支持分级,则返回true。
Post-Type存档
- is_post_type_archive()
- 在任何后期类型存档上返回true。
- is_post_type_archive($post_type)
- 如果在与$post_type匹配的post-type存档页上,则返回true。
- is_post_type_archive(数组(“foo”、“bar”、“baz”))
- 如果在与“foo”、“bar”或“baz”匹配的post类型存档页上,则返回true。
要打开post-type存档,请在以下情况下使用'has_archive'=>true注册帖子类型.
- is_comments_popup()
- 在“注释弹出窗口”中时。
任何包含帖子的页面
- 注释打开()
- 当允许在WordPress循环.
- pings_open()
- 当允许在中处理当前Post时WordPress循环.
A PAGE页面
本节参考WordPress页码,不是来自您博客的任何通用网页,或者换句话说,不是内置的帖子类型“第页”。
- is_page()
- 任何时候第页正在显示。
- is_page(42)
- 什么时候?第页显示42(ID)。
- is_page(“关于我和乔”)
- 当第页带有标题(_T)正在播放《关于我和乔》。
- is_page('about-me')
- 当第页带有帖子名称正在显示“about-me”的(slug)。
- is_page(数组(42,'about-me','about-me And Joe'))
- 当页码显示的是帖子ID=42,或帖子名称是“关于我”,或标题(_T)是《关于我和乔》。
- is_page(数组(42、54、6))
- 当页码显示的是帖子ID=42,或帖子ID=54,或帖子ID= 6.
另请参见is_page()有关更多片段,例如is_子页面,是树(_T).
注释:没有检查页面是否为子页面的功能。我们可以绕过这个问题:
如果(is_page()&&$post->post_parent>0){echo“这是一个子页面”;}
是页面模板
允许您确定是否在页面模板中,或者是否正在使用特定的页面模板。
- is_page_template()
- 是一个页面模板正在使用?
- is_page_template(“关于.php”)
- 是页面模板“关于”被使用?
注释:如果文件位于子目录中,则还必须包含此项。这意味着这应该是与主题相关的文件路径以及文件名,例如页面模板/about.php.
类别页面
- is_category($category)
- 当实际页面与$类别类别。
- is_category('9')
- 显示类别9的存档页面时。
- is_category(“臭奶酪”)
- 显示名称为“臭奶酪”的类别的存档页面时。
- is_category('blue-cheese')
- 显示带有类别Slug“blue-cheese”的类别的存档页面时。
- is_category(数组(9,'blue-cheese','Stinky cheese'))
- 当显示的帖子类别为term_ID 9或段塞“blue-cheese”,或名称“臭奶酪”。
- is_category(5)||cat_is_ancestor_of(5,get_query_var('cat'))
- 当显示的帖子类别为term_id 5或term_id 5的祖先(子类别、子子类别…)时,返回true。
- 类别内('5')
- 如果当前帖子为在里面指定的类别id(阅读更多信息).
- in_category(数组(1,2,3))
- 如果当前帖子为在里面类别1、2或3。
- !in_category(数组(4,5,6))
- 如果当前帖子为不在中类别4、5或6。请注意!一开始。
注:测试时一定要检查拼写:“is”和“in”明显不同。
另请参见是_存档()和类别模板.
标记页
- is_tag()
- 显示任何标记存档页面时。
- is_tag(“轻度”)
- 显示带有“轻度”段塞的标记的存档页面时。
- is_tag(数组(“sharp”、“轻度”、“极端”)
- 当所显示的标记存档具有“尖锐”、“轻微”或“极端”的段塞时,返回true。
- has_tag()
- 当当前帖子有标签时。在2.7之前,必须在The Loop中使用。
- has_tag(“轻度”)
- 当当前帖子的标签为“温和”时。
- has_tag(数组(“sharp”、“轻度”、“极端”)
- 当当前帖子在数组中有任何标记时。
另请参见是_存档()和标记模板.
分类页面(及相关页面)
是_税
- is_tax()
- 对于自定义分类归档页面为True,对于内置分类(类别和标记归档)为false。
- is_tax(“味道”)
- 显示风味分类的分类归档页面时。
- is_tax('味道','温和')
- 当显示风味分类的存档页面时,其slug为“轻度”。
- is_tax(“味道”,数组(“尖锐”,“温和”,“极端”)
- 当显示的风味分类存档具有“尖锐”、“温和”或“极端”的段塞时,返回true。
时间(_T)
- has_term()
- 检查当前帖子是否包含任何给定术语。第一个参数应该是空字符串。它需要一个分类代码slug/name作为第二个参数。
- has_term('绿色','颜色')
- 当当前帖子有来自分类法“颜色”的术语“绿色”时。
- has_term(数组('green','orange','blue'),'color')
- 当前帖子在数组中包含任何术语时。
术语存在(_E)
- term_exists($term、$taxonomy、$parent)
- 退换商品真的如果$术语存在于任何分类法中。如果$分类法如果给定,则此术语必须存在。第三个参数$父级也是可选的,如果给定,则术语必须是此父级的子级,分类必须是分层的。
is_taxonomy_分层
- is_taxonomy_hierarchical($taxonomy)
- 退换商品真的如果分类法$分类法是分层的。要声明分类层次结构,请使用“分层”=>true使用时寄存器_轴索().
分类学存在
- taxonomy_exists($taxonym)
- 退换商品真的如果$分类法已使用在此网站上注册寄存器_轴索().
另请参见是_存档().
作者页面
- is_author()
- 显示任何作者页面时。
- 是作者('4')
- 显示作者编号(ID)4的存档页面时。
- 是作者(“Vivian”)
- 显示昵称为“Vivian”的作者的存档页面时。
- 是作者(“john-jones”)
- 当显示带有Nicename“john jones”的作者的存档页面时。
- is_author(数组(4,'john jones','Vivian'))
- 当作者的存档页面为用户ID 4或用户名(_N)“john-jones”,或昵称“薇薇安”。
另请参见是_存档()和作者模板.
多作者网站
- 是多作者()
- 当一个网站有多个作者发表文章时。可用于3.2版.
A日期页
- 是日期(_date)
- 什么时候?任何正在显示基于日期的存档页面(即每月、每年、每天或基于时间的存档)。
- 是年(_year)
- 显示年度存档时。
- 是_月(_)
- 显示每月存档时。
- 是日(_D)
- 显示每日存档时。
- 是时间(_time)
- 显示每小时、“每分钟”或“第二次”存档时。
- 是_新_天()
- 如果根据发布日期,今天是新的一天。应该在循环内使用。
另请参见是_存档().
任何存档页面
- 是_存档()
- 什么时候?任何正在显示“存档”页面的类型。类别、标签、其他分类术语、自定义帖子类型存档、作者和基于日期的页面都是存档的类型。
搜索结果页面
- is_search()
- 显示搜索结果页面存档时。
A 404未找到页面
- is_404()
- 出现“HTTP 404:未找到”错误后显示页面时。
分页页面
- is_paged()
- 当显示的页面为“分页”时。这是指一个档案或主页被拆分为几个页面,并将在帖子的第二页和后续页面返回true。这是真的不参考帖子或第页其内容已使用<!--下一页--> 快速标记。使用<!--下一页-->QuickTag,请参阅A页面第节。
附件
- 是附件(_A)
- 当将附件文档发送到帖子或第页正在显示。附件是通过后期编辑器的上传实用程序上传的图像或其他文件。附件可以显示在自己的“页面”或模板上。
另请参见使用图像和文件附件.
附件是图像
- wp_attachment_is_image($post_id)
- 退换商品真的如果随附的文件身份证件等于$帖子id是一个图像。Mime公司允许的格式和扩展名为:.jpg、.jpeg、.gif、et.png。
本地附件
- is_local_attachment($url)
- 退换商品真的如果链接传入$url(网址)是来自此网站的真实附件文件。
单个页面、单个帖子、附件或任何其他自定义帖子类型
- is_singular()
- 退换商品真的对于任何大小写(),is_page(),或是附件(_A).
- is_singular(“foo”)
- 退换商品真的如果帖子类型是“foo”。
- is_singular(数组('foo'、'bar'、'baz'))
- 退换商品真的如果帖子类型是“foo”、“bar”或“baz”。
另请参见自定义帖子类型书。
帖子类型存在
- post_type_exists($post_type)
- 退换商品真的是给定的$帖子类型已使用在此网站上注册寄存器post_type().
是主查询
- 是主查询()
- 退换商品真的当当前查询(例如循环中的查询)是“主”查询时。
过滤器挂钩the_content的示例
add_action('the_content','baw_add_social_buttons');函数baw_add_social_buttons($content){如果(!is_admin()&&is_main_query()){return$content。函数from_a_social_plugin();}return$content;}
当WordPress试图在Loop或单个帖子页面中显示每个帖子的内容时,如果我们是在主查询中,而不是在管理端,那么我们会添加一些社交按钮(例如)。
动作挂钩pre_get_posts示例
add_action('pre_get_posts','baw_modify_query_exclude_categ');函数baw_modify_query_exclude_category($query){如果(!is_admin()&&$query->is_main_query()&&$query->get('cat')){$query->set('cat','-5');}}
使用预获取支柱,无法直接呼叫是主查询,我们应该使用$查询作为参数给出。
新的一天
- 是_新_天()
- 退换商品真的如果今天是新的一天。
银团贷款
- 是馈送(_F)
- 当请求的站点是银团贷款。此标签通常不由用户使用;它由WordPress内部使用,可供插件开发人员使用。
追踪
- is_trackback()
- 当请求的站点是WordPress的Trackback引擎的钩子时。此标签通常不由用户使用;它由WordPress内部使用,可供插件开发人员使用。
A预览
- is_preview()
- 在草稿模式下查看正在显示的单个帖子时。
有摘录
- has_excert()
- 当当前帖子有摘录时
- has_excerpt(42)
- 当帖子42(ID)有摘录时。
- has_nav_menu()
- 退换商品真的当注册的导航菜单位置分配了菜单时。
另请参见寄存器_可用_菜单().
循环内部
- in_the_loop()
- 检查您是否处于“循环中”。对于插件作者来说很有用,当你在循环中时,这个条件返回为true。
- is_dynamic_sidebar()
- 退换商品真的如果主题支持动态边栏。
- is_active_sidebar()
- 检查给定的侧边栏是否处于活动状态(正在使用中)。退换商品真的如果侧边栏(通过名称或id标识)正在使用。
注释:要显示侧边栏的内容,请使用动态侧边栏($sidebar).
小工具是否处于活动状态
- is_active_widget($widget_callback,$widget_id)
- 退换商品真的如果具有回调的小部件$widget_callback(小部件_回拨)或者是身份证件是$widget_id将显示在前端。
注释:要使此函数有效,必须在小部件初始化后运行,在操作“init”或更高版本中,请参阅行动参考.
是否安装了日志
- is_blog_installed()
- 退换商品真的如果电流安装正确。
注释:将首先检查缓存。如果你有一个缓存插件,可以保存缓存值,那么这会起作用。如果你使用默认的WordPress缓存,而数据库消失了,那么你可能会遇到问题。
从右向左阅读
- is_rtl()
- 退换商品真的如果当前区域设置是从右向左读取的(RTL)。
示例
if(is_rtl()){wp_enqueue_style('style-rtl',插件url('/css/style-rtl.css',__FILE__));wp_enqueue_script('script-rtl',插件url('/js/script-rtl.js',__FILE_));}
网络的一部分(多站点)
- 是多站点(_M)
- 检查当前站点是否在WordPress MultiSite安装中。
主站点(多站点)
- 是主站点()
- 确定站点是否是网络中的主站点。
网络管理(多站点)
- is_super_admin()
- 确定用户是否是网络(超级)管理员。
用户是否已登录
- is_user_logged_in()
- 退换商品真的如果当前有任何用户登录,则为任何角色。
电子邮件已存在
- 电子邮件存在($email)
- 检查给定的电子邮件地址是否$电子邮件已注册到用户名,并返回该用户的身份证件或假如果不存在。
用户名已存在
- 用户名存在($username)
- 检查给定用户名是否$用户名已注册到用户名,并返回该用户的身份证件或假如果不存在。
活动插件
- is_plugin_active($path)
- 检查插件是否已激活。
- is_plugin_active('akismet/akismet.php')
- 检查是否阿基斯梅特已激活。
- is_plugin_inactive($path)
- 检查插件是否已停用。等同于!is_plugin_active($path).
- is_plugin_active_for_network($path)
- 对于多站点安装上的网络激活也是一样的。
- is_plugin_page()
- 退换商品真的如果是加载的页面,那么管理端就是一个插件的页面。自WordPress 3.1以来,此函数已被弃用,没有已知的替代方法。
儿童主题
- 是儿童主题()
- 检查子主题是否正在使用。
主题支持功能
- 当前主题支持()
- 检查是否存在各种主题功能。
- current_theme_support(“后缩略图”)
- 退换商品真的如果当前主题支持特色图片。要添加主题支持功能,请使用添加主题支持().
有帖子缩略图
- has_post_thumbnail($post_id)
- 退换商品真的如果贴子带有身份证件等于$帖子id包含特色图像。主题应支持特色图像,见上文。
脚本正在使用
- wp_script_is($handle,$list)
- 退换商品真的如果脚本带有手柄是$句柄已“注册”、“排队”、“完成”、ou“to_do”,具体取决于$列表.
示例
$handle='fluidVids.js';$list=“排队”;if(wp_script_is($handle,$list)){回报;}其他{wp_register_script('fluidVids.js',插件dir_url(__FILE_)。'js/fluidvids.min.js');wp_enqueue_script('fluidVids.js');}
这将检查名为“fluidVids.js”的脚本是否已排队。如果它没有排队,那么文件将被注册并排队。
在自定义程序中预览
- is_自定义预览()
- 退换商品真的如果在中预览网站自定义程序,假否则。
工作示例
下面是演示如何使用这些条件标记的工作示例。
单柱
此示例显示如何使用大小写()要仅在查看单个文章页面时显示特定内容,请执行以下操作:
if(is_single()){echo“这篇文章的标题是”。获取标题();}
将此自定义函数添加到您的子主题functions.php文件中,并修改条件标记以满足您的需要。
add_action('loop_start','add_to_single_posts');函数add_to_single_posts(){if(是单个(“post”)){echo'<div class=“your-class”>您的文本或HTML</div>';}}
您还可以使用:
add_action('loop_start','wpsites_add_to_single_posts');函数wpsites_add_to_single_posts(){if(is_single()){echo'<div class=“your-class”>您的文本或HTML</div>';}}
另一个如何在循环中使用条件标记的示例。当这是显示单个帖子或主页时,选择在index.php中显示内容或摘录。
if(is_home()||is_single()){内容();}其他{_exercert();}
当您需要在非主页的位置显示代码或元素时。
<?php if(!is_home()){?>插入标记。。。<?php}?>
检查多个条件
您可以使用PHP运算符在单个if语句中计算多个条件。
如果您需要检查条件组合的计算结果是true还是false,这很方便。
//检查是否满足2个条件if(is_single()||is_page())){//如果是一篇文章或一个页面,做一些特别的事情}if(is_archive()&&!is_category(“玉米片”){//如果它是除玉米片以外的任何类别的存档页面,请做一些特别的事情}
//检查是否满足3个条件if($query->is_main_query()&&is_post_type_archive(“产品”)&&!is_admin()){//如果它是产品的自定义后期类型存档的主查询//如果我们不是WordPress管理员,那么做一些特别的事情}if(is_post_type_archive(“电影”){//如果是电影的自定义帖子类型存档//或者是流派分类档案//或者它是Actor的分类归档,做一些特别的事情}
基于日期的差异
如果有人按日期浏览我们的网站,让我们用不同的颜色区分不同年份的帖子:
<?php(电话)//这将启动循环if(have_posts()):while(haver_posts)):the_post(); ?><h2 id=“发布-<?php the_id();?>”><a href=“<?php-the_permalink()?>”rel=“bookmark”title=“永久链接到<?php the_title_attribute();?>”><?php the_title(); ?></a></h2><小><?php the_time('F jS,Y')?><!--由<?php the_author()?>--></小><?php(电话)//我们正在显示基于日期的存档吗?if(is_date()){if(日期(“Y”)!=获取日期(“Y”){//这篇文章是前一年写的//所以让我们使用“oldentry”类设置内容的样式echo'<div class=“oldentry”>';}其他{echo'<div class=“entry”>';}}其他{echo'<div class=“entry”>';}the_content('阅读本条剩余内容»');?></div>
此示例将根据读者当前查看的页面在侧边栏中显示不同的内容。
<!-- 开始侧边栏--><div id=“侧边栏”><?php(电话)//让我们生成适合所显示页面的信息if(is_home()){//我们在主页上,所以让我们显示所有顶级类别的列表echo“<ul>”;wp_list_categories('optionall=0&sort_column=name&list=1&children=0');echo“</ul>”;}elseif(is_category()){//我们正在查看单个类别视图,因此让我们显示所有类别echo“<ul>”;wp_list_categories('optionall=1&sort_column=name&list=1&childrens=1&hierarchical=1');echo“</ul>”;}elseif(is_single()){//我们正在查看一个页面,所以我们不要在侧边栏中显示任何内容}elseif(is_page()){//我们正在查看一个静态页面。哪一个?if(is_page(“关于”)){//我们的关于页面。echo“<p>这是我的主页!</p>”;}elseif(is_page('Colophon')){echo“<p>这是我在WordPress上运行的colophon页面”。bloginfo(“名称”)。“</p>”;}其他{//其他页面的catch-allecho“投票给佩德罗!”;}}其他{//其他一切(档案、搜索、404等)echo“<p>仅此而已。</p>”;}//就这些,伙计们!?><form id=“searchform”method=“get”action=“<?php echo esc_url($_SERVER['php_SELF']);?>”><div><input type=“text”name=“s”id=“s”size=“15”/><input type=“submit”value=“<?php_e('搜索');?>”/></div></form></div><!-- 结束侧栏-->
有用的404页面
这个创建错误404页面本文有一个使用PHP条件函数的示例发行()
在中编写友好消息第节。
这个动态菜单高亮显示本文讨论了如何使用条件标记在菜单中突出显示当前页面。
有时,在sidebar.php等其他模板中执行的查询可能会损坏某些条件标记。例如,在header.php中,条件标记可以正常工作,但在主题的footer.php中不起作用。诀窍是wp_reset_query在页脚中的条件测试之前。例如:
<?php(电话)wp_reset_query();if(is_page('2')){echo“这是第2页!”;} ?>
条件标记索引