在模板文件中,我們可以根據能與某頁(yè)面相匹配的條件,利用條件標簽更改該頁(yè)面上將要顯示的內容以及內容的顯示方式。例如,如果希望在博客首頁(yè)文章列表的上方顯示一段文字,可以利用 is_home()條件標簽輕松實(shí)現這一效果。
注意:條件標簽與WordPress模板層級密切相關(guān)。
所有條件標簽都會(huì )檢查是否有條件可符合相應頁(yè)面,之后返回TRUE或者FALSE。下面列出能夠使各個(gè)條件標簽返回TRUE的條件:
is_home()
顯示博客主頁(yè)時(shí),該條件標簽返回TRUE。
注意:如果將靜態(tài)頁(yè)面作為博客主頁(yè),該標簽會(huì )在顯示日志頁(yè)面時(shí)返回TRUE。
is_front_page()
顯示博客頭版消息(無(wú)論是日志或是頁(yè)面)。當系統顯示博客主頁(yè)且管理面板的設置>閱讀菜單下“主頁(yè)顯示為”選項設為最近發(fā)表的文章”,或者'設置>閱讀菜單下“主頁(yè)顯示為”選項設為且"主頁(yè)"是當前被顯示的頁(yè)面時(shí),is_front_page()標簽返回TRUE。注意:該標簽在WordPress 2.5版本中首次亮相。
is_admin()
顯示控制板或管理欄時(shí),is_admin()標簽返回TRUE。
is_single()
顯示任何單獨一篇日志時(shí),is_single()標簽返回TRUE。
is_single('17')
顯示編號為17的單篇日志時(shí),該標簽返回TRUE。
is_single('Irish Stew')
顯示標題為"Irish Stew"的單篇日志時(shí),該標簽返回TRUE。
is_single('beef-stew')
顯示別名為"beef-stew"的單篇日志時(shí),該標簽返回TRUE。
is_single(array(17,'beef-stew','Irish Stew'))
當所顯示的單篇日志編號為17,或post_name為"beef-stew",或post_title為"Irish Stew"時(shí),is_single(array(17,'beef-stew','Irish Stew'))標簽返回TRUE。注意:數組功能首次出現于WordPress 2.5。
is_sticky()
若當前日志的"Stick this post to the front
page(將該日志在首頁(yè)置頂)"復選框被選中,is_sticky()返回TRUE。此時(shí)標簽沒(méi)有提供日志的編號變量,因此系統會(huì )用到WordPress主循環(huán)the Loop的日志編號。注意:該標簽首次出現于WordPress 2.7。
is_sticky('17')
若編號為17的日志被置頂,該標簽返回TRUE。
is_comments_popup()
顯示的內容在評論彈出式窗口中時(shí),該標簽返回TRUE。
comments_open()
若評論允許當前日志在WordPress主循環(huán)中運行,該標簽返回TRUE。
pings_open()
若引用通告ping允許當前日志在WordPress主循環(huán)中運行,該標簽返回TRUE。
這里的PAGE指的是WordPress的“頁(yè)面”功能,而不是博客生成的網(wǎng)頁(yè)。
is_page()
顯示任何一篇頁(yè)面時(shí),該標簽返回TRUE。
is_page('42')
顯示編號為42的頁(yè)面時(shí),該標簽返回TRUE。
is_page('About Me And Joe')
若顯示的頁(yè)面的post_name為"About Me And Joe",該標簽返回TRUE。
is_page('about-me')
若顯示的頁(yè)面的post_name(別名)為"about-me",該標簽返回TRUE。
is_page(array(42,'about-me','About Me And Joe'))
當所顯示的頁(yè)面編號為42,或post_name為"about-me",或post_title為"About Me And Joe"時(shí),is_page(array(42,'about-me','About Me And Joe'))標簽返回TRUE。注意:數組功能首次出現于WordPress 2.5。
目前is_subpage()函數尚未出現,但我們可以用以下代碼來(lái)判斷某頁(yè)面是否子頁(yè)面:
<?php// Get $post if you're inside a function global $post; if ( is_page() && $post->post_parent ) { // This is a subpage} else { // This is not a subpage}?>也可以將這一功能添加到functions.php文件中:
function is_tree($pid) { // $pid = The page we're looking for pages underneath global $post; // We load this as we're outside of the post if(is_page()&&($post->post_parent==$pid||is_page($pid))) return true; // Yes, it's in the tree else return false; // No, it's outside};然后調用is_tree('id')來(lái)判斷頁(yè)面是否在目錄樹(shù)中。在下面的代碼示例中,我們可以用is_tree('2')來(lái)代替第一個(gè)if標簽中的"is_page('about') || $post->post_parent == '2'"。注意,如果有兩層以上頁(yè)面,父頁(yè)面指的是子頁(yè)面的上一級頁(yè)面而不是頂級頁(yè)面。
如果要判斷當前頁(yè)面是否是某個(gè)特定頁(yè)面或者是否是某一頁(yè)面的子頁(yè)面(例如在一個(gè)基于頁(yè)面的網(wǎng)站的不同版塊上顯示不同banner廣告),可以先從后臺獲取父頁(yè)面的ID,然后按以下方式進(jìn)行編碼:
<?phpif ( is_page('about') || $post->post_parent == '2' ) { $bannerimg = 'home.jpg';} elseif ( is_page('learning') || $post->post_parent == '56' ) { $bannerimg = 'teaching.jpg';} elseif ( is_page('admissions') || $post->post_parent == '15' ) { $bannerimg = 'admissions.jpg';} else { $bannerimg = 'home.jpg'; // Fall-through } ?>如果希望進(jìn)行多次頁(yè)面判斷,最好創(chuàng )建一個(gè)長(cháng)期函數(is_cpage())。例如,如果將is_subpage()引入wp,用戶(hù)就可以在functions.php文件中修改函數而不必做其它多余改動(dòng)了。
Is a Page模板:自WordPress 2.5版起,用戶(hù)可以通過(guò)Is a Page模板來(lái)判斷目前是否位于頁(yè)面模板中,或是否在使用某個(gè)特定的頁(yè)面模板。is_page_template() :目前是否使用了頁(yè)面模板is_page_template('about.php') :是否使用頁(yè)面模板'about'?注意:頁(yè)面模板與其它條件標簽有所不同,用戶(hù)需要使用文件名(如 about.php 或my_page_template.php)來(lái)指定某個(gè)頁(yè)面模板。
is_category():顯示類(lèi)別存檔頁(yè)面頁(yè)面時(shí),is_category()標簽返回TRUE。is_category('9'):顯示類(lèi)別ID為9的存檔頁(yè)面時(shí),is_category('9')標簽返回TRUE。is_category('Stinky Cheeses') :顯示雷冰名稱(chēng)為“Stinky Cheeses”的存檔頁(yè)面時(shí),is_category('Stinky Cheeses')標簽返回TRUE。is_category('blue-cheese') :顯示類(lèi)別別名為"blue-cheese"的存檔頁(yè)面時(shí),is_category('blue-cheese') 標簽返回TRUE。is_category(array(9,'blue-cheese','Stinky Cheeses')) :當所顯示的類(lèi)別存檔term_ID為9,或別名為"blue-cheese",或類(lèi)別名稱(chēng)為"Stinky Cheeses"時(shí),is_category(array(9,'blue-cheese','Stinky Cheeses')) 標簽返回TRUE。注意:數組功能首次出現于WordPress 2.5。in_category('5') :若當前日志屬于某個(gè)指定ID的類(lèi)別,in_category('5') 標簽返回TRUE。
注意:判斷條件是否符合時(shí),請不要將“in”寫(xiě)作“is”,兩者有很大區別。
is_tag():顯示標簽存檔頁(yè)面時(shí),is_tag() 會(huì )返回TRUE。is_tag('mild'):顯示別名為“mild”的標簽的存檔頁(yè)面時(shí),is_tag('mild') 返回TRUE。is_tag(array('sharp','mild','extreme')):若顯示的標簽別名為"sharp"、 "mild"或"extreme",is_tag(array('sharp','mild','extreme')) 返回TRUE。注意:數組功能首次出現于WordPress 2.5。has_tag():若當前日志有標簽,has_tag()返回TRUE。該標簽必須用在WordPress主循環(huán) 中。注意:has_tag標簽首次出現在WordPress 2.6版中。has_tag('mild') :若當前日志標簽為“mild”,as_tag('mild') 返回TRUE。has_tag(array('sharp','mild','extreme')) :若當前日志標簽為數組中任一個(gè)標簽,has_tag(array('sharp','mild','extreme')) 返回TRUE。
is_author()
顯示作者頁(yè)面時(shí),is_author()返回TRUE。
is_author('4')
若顯示的是ID為4的作者的存檔頁(yè)面,is_author('4') 返回TRUE。
is_author('Vivian')
若顯示的是用戶(hù)名為“Vivian”的作者的存檔頁(yè)面,is_author('Vivian') 返回TRUE。
is_author('john-jones')
若顯示的是用戶(hù)名為“john-jones”的作者的存檔頁(yè)面,is_author('john-jones') 返回TRUE。
is_author(array(4,'john-jones','Vivian'))
若頁(yè)面的用戶(hù)名ID為4,或user_nicename為“john-jones”,或用戶(hù)名為“Vivian”,is_author(array(4,'john-jones','Vivian')) 返回TRUE。注意:數組功能首次出現于WordPress 2.5。
is_date()
顯示日期相關(guān)的存檔頁(yè)面(如月存檔,年存檔,日存檔等基于時(shí)間的存檔頁(yè)面)時(shí),is_date() 返回TRUE。
is_year()
顯示年存檔信息時(shí),is_year() 返回TRUE。
is_month()
顯示月存檔信息時(shí),is_month() 返回TRUE。
is_day()
顯示日存檔信息時(shí),is_day() 返回TRUE。
is_time()
顯示某時(shí)、某分或某秒的存檔信息時(shí),is_time() 返回TRUE。
is_archive()
無(wú)論顯示何種存檔頁(yè)面時(shí),is_archive() 都會(huì )返回TRUE。類(lèi)別存檔、標簽存檔、作者存檔以及日期存檔頁(yè)面都屬于存檔頁(yè)面。
is_search() 顯示搜索結果頁(yè)面時(shí),is_search() 返回TRUE。404 Not Found頁(yè)面is_404()
出現"HTTP 404: Not Found"錯誤后所顯示的頁(yè)面。
is_paged()
當前頁(yè)面需要分頁(yè)顯示時(shí),is_paged()返回TRUE。分頁(yè)型頁(yè)面是指某個(gè)存檔頁(yè)面或需要分成若干頁(yè)顯示的主頁(yè),顯示第二頁(yè)以及之后頁(yè)面時(shí),is_paged()返回TRUE。有些日志或頁(yè)面使用快速標簽分頁(yè)顯示其內容,這些日志和頁(yè)面都不屬于分頁(yè)型頁(yè)面。
is_attachment()
顯示某篇日志或頁(yè)面的附件文件時(shí),is_attachment() 會(huì )返回TRUE。附件可以是一張圖片,也可以是用戶(hù)所上傳的其它文件。附件能夠顯示在“頁(yè)面”或模板上。更多信息請參閱“圖片和附件的使用”。
獨立頁(yè)面、單篇日志或附件
is_singular()
當is_single(), is_page() 或is_attachment()返回TRUE時(shí),is_singular() 也返回TRUE。
新聞聚合器
is_feed()
網(wǎng)站需要使用RSS訂閱時(shí),is_feed()返回TRUE。一般情況下會(huì )用到is_feed()標簽的是WordPress系統和插件開(kāi)發(fā)人員,普通WordPress用戶(hù)很少用到is_feed()標簽。
引用通告(Trackback)
is_trackback()
網(wǎng)站需要將WordPress鉤子勾入Trackback。一般情況下會(huì )用到這個(gè)標簽的是WordPress系統和插件開(kāi)發(fā)人員,普通WordPress用戶(hù)很少用到is_feed()標簽。
預覽
is_preview()
若目前頁(yè)面是在草稿狀態(tài)下顯示的(即預覽),is_preview() 返回TRUE。
Has An Excerpt (摘要)
as_excerpt()
當前日志要顯示摘要時(shí),as_excerpt() 返回TRUE。
has_excerpt('42')
若ID為42的日志要顯示摘要時(shí),has_excerpt('42') 返回TRUE。
<?php// Get $post if you're inside a functionglobal $post;if ( empty($post->post_excerpt) ) { // This post has no excerpt} else { // This post has excerpt}?>(在WordPress主循環(huán)中)
in_the_loop()
判斷目前是否在WordPress主循環(huán)中。該標簽適用于插件開(kāi)發(fā)人員,若目前在WordPress主循環(huán)中,該標簽返回TRUE。
Is Sidebar Active(側邊欄是否被激活)
is_active_sidebar()
檢查現有側邊欄是否被激活(是否啟用)。若側邊欄被啟用,is_active_sidebar() 返回TRUE,否則返回FALSE。該條件函數引入于WordPress 2.8版。
實(shí)例
下面是一些對條件標簽的實(shí)際應用。
單篇日志
下面這個(gè)例子向我們展示了怎樣用is_single()為某個(gè)單獨日志頁(yè)面顯示獨特內容:
if (is_single()){ echo 'This is just one of many fabulous entries in the ' . single_cat_title() . ' category!';}如果訪(fǎng)問(wèn)者按日期瀏覽網(wǎng)站,我們可以用不同顏色標注不同年份的日志或其它信息:
<?php// this starts The Loopif ( have_posts() ) : while ( have_posts() ) : the_post(); ?>< h2 id="post-<?php the_ID(); ?>"><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>"><?php the_title(); ?></a></h2>< small><?php the_time('F jS, Y') ?> </small><?php// are we showing a date-based archive?if (is_date()){ if (date('Y') != get_the_date('Y')) { // this post was written in a previous year // so let's style the content using the "oldentry" class echo '< div class="oldentry">'; } else { echo '< div class="entry">'; }} else { echo '< div class="entry">';}the_content('Read the rest of this entry ?'); ?></div>本例根據訪(fǎng)問(wèn)者當前瀏覽的界面,在側邊欄上顯示不同內容。
<?php// let's generate info appropriate to the page being displayedif (is_home()) { // we're on the home page, so let's show a list of all top-level categories echo "< ul>"; wp_list_cats('optionall=0&sort_column=name&list=1&children=0'); echo "</ul>";} elseif (is_category()) { // we're looking at a single category view, so let's show _all_ the categories echo "< ul>"; wp_list_cats('optionall=1&sort_column=name&list=1&children=1&hierarchical=1'); echo "</ul>";} elseif (is_single()) { // we're looking at a single page, so let's not show anything in the sidebar} elseif (is_page()) { // we're looking at a static page. Which one? if (is_page('About')) { // our about page. echo "< p>This is my about page!</p>"; } elseif (is_page('Colophon')) { echo "< p>This is my colophon page, running on WordPress " . bloginfo('version') . "</p>"; } else { // catch-all for other pages echo "< p>Vote for Pedro!</p>"; }} else { // catch-all for everything else (archives, searches, 404s, etc) echo "< p>Pedro offers you his protection.</p>";} // That's all, folks!?>< form id="searchform" method="get" action="<?php echo $_SERVER['PHP_SELF']; ?>">< div><input type="text" name="s" id="s" size="15" /><input type="submit" value="<?php _e('Search'); ?>" />< /div></form> 設計Error 404頁(yè)面中的編寫(xiě)友好的錯誤信息部分有一個(gè)使用PHP條件函數isset()的示例。
動(dòng)態(tài)菜單高亮
動(dòng)態(tài)菜單高亮中介紹了如何用條件標簽在菜單中激活當前頁(yè)面的高亮顯示部分。
在主題的footer.php文件中
有時(shí)在模板文件(如sidebar.php)中執行的查詢(xún)可能破壞一些條件標簽。例如,某個(gè)條件標簽可以在header.php文件中正常運行,但卻不能適應主題的footer.php文件。這時(shí)可以在頁(yè)腳中把wp_reset_query放條件檢驗前:
<?phpwp_reset_query();if (is_page('2') ) {echo 'this is page 2!';} ?>條件標簽索引
按字母順序排列:
聯(lián)系客服