WordPress 常用判断函数大全

发布于 2021-05-02 12:25:38 字数 3838 浏览 1682 评论 0

所有的条件判断标签都会判断某个条件是否成立,然后返回 True 或者 False,下面是所有的 WordPress 条件判断标签。

首页

  • is_home() 判断当前页面是否为首页,如果是当前首页则返回true,但是如果我们在后台设置了首页静态页面的话,则会返回 false。
  • is_front_page() 它和is_home()很类似,唯一不同的就是,就算我们设置了静态页面为首页,它也会返回 true

文章页

对于 is_single(),它用来判断当前页面是否为文章页面,它还可以用来自定义文章类型页面,它稍显复杂,它有如下几种调用形式 :

  • is_single('12') 判断当前文章是否是id为12的文章
  • is_single('xin') 判断当前文章的标题是否是"xin"
  • is_single('new-star') 判断当前文章的别名是否为"new-star"
  • is_single(array(12,'new-star','xin')) 传递多个参数,判断该文章是否同时满足id为12、别名为new-star、标题为xin
  • is_single(array(12,14,123)) 判断多个文章的id
  • is_single(array('new-star','red-star','black-shiled')) 判断多个文章的别名
  • is_single(array('xin','gui','meng')) 判断多个文章的标题

不过需要注意的是,is_single 无法很明确的判断参数究竟是 id、别名还是标题。

如果传递了参数为 17,那么当 id 为 17 的会返回 true,当别名为 17 的也会返回 true

单页

  • is_sticky() 判断当前文章是否为置顶文章,也可以传递参数,大体的使用方法和 is_single() 相同
  • is_singular() 判断是否满足 is_single()、is_page()、is_attachment() 的任意一个
  • is_post_type_archive() 判断是否为存档页面,也可以加上一些参数来判断当前的存档页类型
  • comments_open() 判断是否开启评论功能,必须用在循环中
  • pings_open() 判断文章ping功能是否开启,必须用在循环中
  • is_page() 判断当前是否为页面类型文章,同 is_single()

分类页

  • is_category() 判断是否为页面类型文章,同 is_single(),下面是范例:
  • is_category('9') 判断当前分类页面的 id 是否为 9
  • is_category('xin') 判断当前分类页面的名字是否为 xin
  • is_category('new-star') 判断当前分类页面的别名是否为 new-star
  • is_category(array(9,'new-star','xin')) 用数组传递
  • in_category(22) 判断当前文章是否属于某个特定分类目录,id 为 22,注意这里是in不是is
  • is_tag() 判断当前页面是否为标签页面,可以传递参数,和 is_category 用法一致
  • has_tag() 判断当前文章是否有一个标签,必须用在循环中
  • is_tax() 判断当前页面是否是一个自定义分类的存档页面,下面是用法范例:
  • is_tax('xin') 判断当前页面是否是一个名为xin的自定义分类的存档页面
  • is_tax('new','old') 判断当前自定义分类new的别名是否为 old
  • is_tax('new',array('old','xin','star')) 判断当前自定义分类new的别名是否为 old、xin、star 的一个
  • has_term() 判断当前页面是否带有自定义分类,如下:
  • has_term('green','color') 判断当前是否有别名为 green 的自定义分类 color
  • has_term(array('green','orange'),'color') 判断当前页面是否有数组中的自定义分类 color

文章存档页

is_archive() 函数函数主要是检查任何类型的存档页面,是一个布尔类型函数,返回 true 或 false,一般我常用来验证自定义类型。

<?php is_archive(); ?>

不过 is_archive() 不支持任何参数,如果需要针对某个类型进行判断,则此函数就行不通了,需要使用下面这个函数 is_post_type_archive( $post_type )

作者页面

  • is_author()判断当前页面是否是一个作者存档页面,如下:
  • is_author('4') 判断当前页面是否为id为4的作者页面
  • is_author('xin') 判断当前页面是否为xin的作者存档页面
  • is_author(array(4,'new-star','xin')) 判断当前存档页面是否属于id为4,或者名字为"new-star"、"xin"的作者的存档页面

其他

  • is_year() 判断当前页面是否为任何的按时间存档的页面
  • is_month() 判断当前页面是否为按年份存档的页面
  • is_day() 判断当前页面是否为按日期存档的页面
  • is_time() 判断当前页面是否按照小时、分钟、秒存档的页面
  • is_new_day() 判断当前页面是否为当天文章的时间存档页
  • is_archive() 判断当前页面是否为一个存档页面,包括分类、标签、作者页面、日期存档页面
  • is_search() 判断当前页面是否为一个搜索结果页面
  • is_404() 判断当前页面是否为一个404页面
  • is_paged() 判断当前页面是否为分页
  • is_attachment() 判断当前页面是否为附件页
  • is_feed() 判断是否在订阅页面
  • is_trackback() 判断trackback是否开启
  • is_preview() 判断一篇文章是否在预览状态
  • has_excerpt() 判断当前文章是否有摘要内容
  • in_the_loop() 判断是否在主循环内部

技巧

如果我们发现一些判断失效了,有可能是循环未注销造成的全局变量错乱。

我们可以使用如下函数来注销循环:

  • wp_reset_postdata() 使用WP_Query创建多个循环时使用,不接受任何参数,恢复$post全局变量的数据
  • wp_reset_query() 使用query_posts()自定义循环时使用,不接受任何参数,它不仅恢复$post全局变量,还会销毁之前的查询
  • rewind_posts() 需要重用一个页面的查询结果时使用

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84960 人气
更多

推荐作者

玍銹的英雄夢

文章 0 评论 0

我不会写诗

文章 0 评论 0

十六岁半

文章 0 评论 0

浸婚纱

文章 0 评论 0

qq_kJ6XkX

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文