华纳云香港服务器

WordPress基础知识:条件判断标签及用法大全

WordPress主题推荐

判断页面(Page)

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

  1. is_page()

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

  1. is_page( 42 )

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

  1. is_page( ‘About Me And Joe’ )

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

  1. is_page( ‘about-me’ )

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

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

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

判断内容分页

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

  1. <!–nextpage–>

标签可以将内容分隔开分成不同的页面,并通过对应的函数获取分页的列表。下面的例子,可以判断当前是在第几个页面中,这样你就可以在某个页面中输出一些特别的信息(例如在第一个页面中,输出一个提示)。

例子 1:

  1. <?php
  2. $paged = $wp_query->get( ‘page’ );
  3. if ( ! $paged || $paged < 2 ) {
  4.     // 这里是不带有分页或者是带有分页页面的第一页  
  5. else {
  6.    // 这里是带有分页的其他页面。  
  7. }
  8. ?>

例子 2:

  1. <?php
  2. $paged = get_query_var( ‘page’ ) ? get_query_var( ‘page’ ) : false;
  3. if ( $paged === false ) {
  4.     // 这里是不带有分页或者是带有分页页面的第一页  
  5. else {
  6.    // 这里是带有分页的其他页面。  
  7. }
  8. ?>

判断子页面(sub-Pages)

WordPress 中的页面(page)是有父子级关系的,判断是否为子页面时,没有内置 is_subpage() 这样的函数,但是你可以使用下面的方法来判断。

方法 1:

  1. <?php
  2. global $post;     // 下面代码需要用在主循环中,如果你在循环外使用,需要声明全局变量 $post        
  3. if ( is_page() && $post->post_parent ) {
  4.     // 这是一个子页面  
  5. else {
  6.     // 这不是一个子页面  
  7. }
  8. ?>

建议将下面的方法 2 加入你的 functions.php 文件中,下面的 is_subpage() 函数的原理与方法 1 类似,但是可以返回当前页面父页面的 ID 或者是 false。

方法 2:

  1. <?php
  2. function is_subpage() {
  3.     global $post;                              // 获取页面的相关信息  
  4.     if ( is_page() && $post->post_parent ) {   // 判断是否有父页面  
  5.         return $post->post_parent;             // 如果有返回父页面的 ID  
  6.     } else {
  7.         return false;                          // 如果没有返回 false  
  8.     }
  9. }
  10. ?>

如果你经常需要判断子页面,强烈建议使用方法 2。

如果需要判断父页面是否为某个特定的页面,可以使用方法 3 的代码。方法 3 代码会判断的更加详细,从而更加便于自定义和个性化(例如加一些图片)。

方法 3:

  1. <?php
  2. if ( is_page( ‘about’ ) || ‘2’ == $post->post_parent ) {
  3.     // 这个页面是“about”页面,或者它的父页面是“about”  
  4.     $bannerimg = ‘about.jpg’;
  5. elseif ( is_page( ‘learning’ ) || ’56’ == $post->post_parent ) {
  6.     $bannerimg = ‘teaching.jpg’;
  7. elseif ( is_page( ‘admissions’ ) || ’15’ == $post->post_parent ) {
  8.     $bannerimg = ‘admissions.jpg’;
  9. else {
  10.     $bannerimg = ‘home.jpg’; // 如果都不满足的话,就用这个图片  
  11. }
  12. ?>

方法 4 是一个函数可以让你更容易的实现判断,只需要传递参数即可,如果正在访问对应页面,将会返回 True。

方法 4:

  1. <?php
  2. function is_tree( $pid ) {      // $pid = 传递的 ID 参数是我们希望判断的页面 ID  
  3.     global $post;
  4.     if ( is_page($pid) )
  5.         return true;            // 当前正在这个页面,所以返回 True        
  6.     $anc = get_post_ancestors( $post->ID );
  7.     foreach ( $anc as $ancestor ) {
  8.         if( is_page() && $ancestor == $pid ) {
  9.             return true;
  10.         }
  11.     }
  12.     return false;  // 没有在当前页面,并且这个页面没有子页面  
  13. }
  14. ?>

可以将这个函数添加进 functions.php 中,调用 is_tree( ‘id’ ) 就可以判断当前页面是否是指定页面或者是这个页面的子页面。相比较方法 3 is_tree( ‘2’ ) 的功能和 is_page( ‘about’ ) || ‘2’ == $post->post_parent 是一样的。

注意,如果页面多于一级,那么父级页面指的是上一层页面,不是这个页面层次关系最顶层的页面。

判断页面模版(Page Template)

判断当前页面是否由某个页面模版生成的。

  1. is_page_template()

判断是否使用了一个页面模版。

  1. is_page_template( ‘about.php’ )

判断应用的页面模版是否是 “about” 这个模板。注意,这个参数与其他参数不同,如果你想判断是否是由某个页面模版声称的,你需要将那个页面模版的文件名填上去,包括后面的 .php 后缀。

判断分类页面(Category)

  1. is_category()

判断当前页面是否为分类目录或者存档(archive)页面。

  1. is_category( ‘9’ )

判断当前分类页面的 ID 是否为 9。

  1. is_category( ‘Stinky Cheeses’ )

判断当前分类页面的名字是否为“Stinky Cheeses”。

  1. is_category( ‘blue-cheese’ )

判断当前分类页面的别名是否为“blue-cheese”。

  1. is_category( array( 9, ‘blue-cheese’, ‘Stinky cheeses’ ) )

同上。

  1. in_category( ‘5’ )

判断当前文章是否属于某个特定分类目录(id 为 5),返回 True。注意,这里是 in 而不是 is,与上面的不同。

  1. in_category( array( 1,2,3 ) )

判断当前文章是否属于某些特定的分类目录。

判断标签页面(Tag)

  1. is_tag()

判断当前页面是否为标签页面。

  1. is_tag( ‘mild’ )

判断当前标签页面的别名是否为 “mild”。

  1. is_tag( array( ‘sharp’, ‘mild’, ‘extreme’ ) )

判断当前标签页面的别名是否是 “sharp”、“mild”或者“extreme”中的某个。

  1. has_tag()

判断当前文章是否有一个标签,必须用在主循环中

  1. has_tag( ‘mild’ )

判断当前文章是否有标签 “mild”。

  1. has_tag( array( ‘sharp’, ‘mild’, ‘extreme’ ) )

判断当前文章是否有数组里的那些标签。

判断自定义分类页面(Taxonomy)

自定义分类页面并非是上面的 category 那种分类页面,而是指 WordPress 分类系统页面。在 WordPress 默认内置了两种分类系统:category 和 tag,同时支持开发者自定义分类系统。

  1. is_tax()

判断当前页面是否为一个分类系统的存档页面。

  1. is_tax( ‘flavor’ )

判断当前页面是否为一个名为 flavor 自定义分类的存档页面。

  1. is_tax( ‘flavor’, ‘mild’ )

判断当前自定义分类 flavor 页面的别名是否为 mild。

  1. is_tax( ‘flavor’, array( ‘sharp’, ‘mild’, ‘extreme’ ) )

判断当前自定义分类 flavor 页面的页面是否为 sharp、mild、extreme 中的一个。

  1. has_term()

判断当前页面是否带有自定义分类。

  1. has_term( ‘green’, ‘color’ )

判断当前页面是否是否带有别名为 green 的自定义分类 color。

  1. has_term( array( ‘green’, ‘orange’, ‘blue’ ), ‘color’ )

判断当前页面是否是否带有数组中的自定义分类 color。

赞 (0) 打赏
1 2 3 4
版权声明:本文为转载文章,来源于 知更鸟 ,版权归原作者所有!发布此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请联系我们,确认后马上更正或删除,谢谢!
wu