wordpress 条件判断标签及用法大全

可以在模板文件中使用条件标签,以根据页面匹配的条件来更改在特定页面上显示的内容以及该内容的显示方式。

主页 \ WordPress教程 \ 新手指南 \ wordpress 条件判断标签及用法大全
最后更新:
浏览量: 1,830
作者:
分类:新手指南
评论: 0

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

<?php           
$paged = $wp_query->get( 'page' );    
if ( ! $paged || $paged < 2 ) {  
    // 这里是不带有分页或者是带有分页页面的第一页  
} else {  
   // 这里是带有分页的其他页面。  
}  
?> 

例子2:

<?php  
$paged = get_query_var( 'page' ) ? get_query_var( 'page' ) : false;  
if ( $paged === false ) {  
    // 这里是不带有分页或者是带有分页页面的第一页  
} else {  
   // 这里是带有分页的其他页面。  
}  
?>

判断子页面(sub-Pages)

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

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

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

方法2:

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

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

方法3:

<?php  
if ( is_page( 'about' ) || '2' == $post->post_parent ) {      
    // 这个页面是“about”页面,或者它的父页面是“about”  
    $bannerimg = 'about.jpg';  
} elseif ( is_page( 'learning' ) || '56' == $post->post_parent ) {    
    $bannerimg = 'teaching.jpg';  
} elseif ( is_page( 'admissions' ) || '15' == $post->post_parent ) {   
    $bannerimg = 'admissions.jpg';  
} else {   
    $bannerimg = 'home.jpg'; // 如果都不满足的话,就用这个图片  
}  
?>

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

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

可以将这个函数添加进 functions.php 中,调用 is_tree( 'id' ) 就可以判断当前页面是否是指定页面或者是这个页面的子页面。相比较方法3 is_tree( '2' ) 的功能和 is_page( 'about' ) || '2' == $post->post_parent 是一样的。
注意,如果页面乘此多于一级,那么父级页面指的是上一层页面,不是这个页面层次关系最顶层的页面。

判断页面模版(Page Template)

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

is_page_template()

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

is_page_template( 'about.php' )

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

判断分类页面(Category)

is_category()

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

is_category( '9' )

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

is_category( 'Stinky Cheeses' )

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

is_category( 'blue-cheese' )

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

is_category( array( 9, 'blue-cheese', 'Stinky cheeses' ) )

同上,你懂的。

in_category( '5' )

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

in_category( array( 1,2,3 ) )

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

判断标签页面(Tag)

is_tag()

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

is_tag( 'mild' )

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

is_tag( array( 'sharp', 'mild', 'extreme' ) )

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

has_tag()

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

has_tag( 'mild' )

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

has_tag( array( 'sharp', 'mild', 'extreme' ) )

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

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

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

is_tax()

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

is_tax( 'flavor' )

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

is_tax( 'flavor', 'mild' )

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

is_tax( 'flavor', array( 'sharp', 'mild', 'extreme' ) )

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

has_term()

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

has_term( 'green', 'color' )

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

has_term( array( 'green', 'orange', 'blue' ), 'color' )

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

判断作者页面(Author)

is_author()

判断当前页面是否是一个作者存档页面。

is_author( '4' )

判断当前页面是否为 id 为 4 的作者页面。

is_author( 'Vivian' )

判断当前存档页面是否是 Vivian(Nickname) 的作者存档页面。

is_author( array( 4, 'john-jones', 'Vivian' ) )

判断当前存档页面是否属于 id 为 4,或者名字为 “john-jones”、“Vivian” 的作者存档页面。

is_multi_author()

判断当前博客是否有超过一个作者发表过文章。WordPress 3.2 以上版本可用。

判断是否为日期存档页面(Date Page)

is_date()

判断当前页面是否为任何的按时间存档的页面。

is_year()

判断当前页面是否为按年份存档的页面。

is_month()

判断当前页面是否为按月份存档的页面。

is_day()

判断当前页面是否为按日期存档的页面。

is_time()

判断当前页面是否为按照小时、分钟、秒存档的页面。

is_new_day()

判断当前页面是否为文章日期的新的一天,必须用在主循环中。

判断任意存档页面(Any Archive Page)

is_archive()

判断当前页面是否为一个存档页面,包括:分类、标签、作者页面、日期存档页面等。

判断搜索结果页面(Search Result Page)

is_search()

判断当前页面是否为一个搜索结果页面。

判断是否为 404 页面(404 Not Found Page)

is_404()

判断当前页面是否带有 “HTTP 404:Not Found” 错误。

判断被分页页面(Paged Page)

is_paged()

这里的分页指的是存档页面,如果一个日志或者静态页面的内容通过通过

相关文章

大神,别默默的看了,快来点评一下吧!:)

微信
添加站长微信

微信扫一扫,联系我们

关注
关注公众号

关注微信公众号