最近不少小夥伴都開始製作屬於自己的 WordPress 模板了,初次製作 WordPress 模 板肯定會遇到不少問題比如需要在特定頁面執行特定代碼或者是在特定的頁面輸出一段文字或樣式,這裏小 V 就將所有 WordPress 條件判斷函數都挪列出 來,所有的條件判斷標籤都會判斷某個條件是否成立,然後返回 True 或者 False 。此外有些條件判斷標籤還可以使用一些參數進一步的判斷,下面是所有的 WordPress 條件判斷標籤:
- is_home()
判斷當前頁面是否為首頁如果是當前頁面是首頁則會返回 true,但是你在後台設置了首頁靜態頁面作為首頁的話則會返回 false 。

- is_front_page()
這個函數和上面的 is_home() 函數的作用也一樣,唯一不同的就是就算你設置了靜態頁面為首頁也恢返回 true 。
- is_single()
該函數用來判斷當前頁面是否為文章頁面或者自定義文章類型頁面,並且該頁面是可以附加參數的,下面那是示例代碼:
- //判斷當前文章是否是 id 為 17 的文章。
- is_single( '17' )
- //判斷當前文章的標題是否是 「Irish Stew」 。
- is_single( 'Irish Stew' )
- //判斷當前文章的別名 (Slug) 是否為 「beef-stew」 。
- is_single( 'beef-stew' )
- //傳遞多個參數需要使用數組。上面條件判斷標籤判斷滿足 id 為 17 、別名為 beef-stew 、標題為 Irish Stew 任意一個條件文章被訪問時返回 True 。
- is_single( array( 17, 'beef-stew', 'Irish Stew' ) )
- //判斷多個文章的 id,用法同上。
- is_single( array( 17, 19, 1, 11 ) )
- //判斷多個文章的別名,用法同上。
- is_single( array( 'beef-stew', 'pea-soup', 'chili' ) )
- //判斷多個文章的標題,用法同上。
- is_single( array( 'Beef Stew', 'Pea Soup', 'Chili' ) )
注意:這個函數對於傳遞的參數,並無法很明確的判斷參數究竟是 id 、文章標題或者是文章別名,如果參數為 17,當 id 為 17 的文章會返回 True,當 Slug 為 17 的文章也會返回 True 。
- is_sticky()
判斷當前文章是否為置頂文章,也可以傳遞參數,大體的使用方法和 is_single() 函數一樣。
- is_singular()
判斷是否滿足 is_single 、 is_page 和 is_attachment 的任意一個條件,滿足返回 True 。可以用來判斷任意類型的文章頁面。
- is_post_type_archive()
判斷是否為存檔頁面 (時間存檔頁、標籤、分類、自定義分類),當然也可以加上一些參數比如 post_tag,category 來限制當前的存檔頁類型。
- comments_open()
判斷評論功能是否開啓,必須用在循環中。
- pings_open()
判斷文章 ping 功能是否開啓,必須用在主循環中。
- is_page()
判斷當前是否為頁面類型文章,用法和 is_single 一致。
- is_category()
判斷當前頁面是否為分類目錄,以下是部分代碼示例:
- //判斷當前分類頁面的 ID 是否為 9 。
- is_category( '9' )
- //判斷當前分類頁面的名字是否為 「Stinky Cheeses」 。
- is_category( 'Stinky Cheeses' )
- //判斷當前分類頁面的別名是否為 「blue-cheese」 。
- is_category( 'blue-cheese' )
- //用數組 傳遞參數,在前面的 is_single 裏面講過,作用類似。
- is_category( array( 9, 'blue-cheese', 'Stinky cheeses' ) )
沒什麼特別的可講
- in_category(73)
判斷當前文章是否屬於某個特定分類目錄 (id 為 73),返回 True 。注意,這裏是 in 而不是 is,與上面的不同,用法和 is_category 類似。
- is_tag()
判斷當前頁面是否為標籤頁面,當然可以傳遞參數,和 is_category 用法一致。
- has_tag()
判斷當前文章是否有一個標籤,必須用在循環中。
- is_tax()
判斷當前頁面是否為一個自定義分類的存檔頁面,下面那是用法示例:
- //判斷當前頁面是否為一個名為 flavor 自定義分類的存檔頁面。
- is_tax( 'flavor' )
- //判斷當前自定義分類 flavor 頁面的別名是否為 mild 。
- is_tax( 'flavor', 'mild' )
- //判斷當前自定義分類 flavor 頁面的頁面是否為 sharp 、 mild 、 extreme 中的一個。
- is_tax( 'flavor', array( 'sharp', 'mild', 'extreme' ) )
和 is_category 、 is_tag 用法不同請勿混淆。
- has_term()
判斷當前頁面是否帶有自定義分類。
- //判斷當前頁面是否是否帶有別名為 green 的自定義分類 color 。
- has_term( 'green', 'color' )
- //判斷當前頁面是否是否帶有數組中的自定義分類 color
- has_term( array( 'green', 'orange', 'blue' ), 'color' )
- is_author()
判斷當前頁面是否是一個作者存檔頁面, 用法示例:
- //判斷當前頁面是否為 id 為 4 的作者頁面。
- is_author( '4' )
- //判斷當前存檔頁面是否是 Vivian(Nickname) 的作者存檔頁面。
- is_author( 'Vivian' )
- //判斷當前存檔頁面是否屬於 id 為 4,或者名字為 「john-jones」 、 「Vivian」 的作者存檔頁面。
- is_author( array( 4, 'john-jones', 'Vivian' ) )
- is_date()
判斷當前頁面是否為任何的按時間存檔的頁面。
- 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_Query 創建多個循環是使用,不接受任何參數,恢復 $post 全局變量的數據
- wp_reset_postdata();
- //使用 query_posts() 自定義循環時使用,不接受任何參數,不僅恢復 $post 全局變量,還會銷燬之前的查詢
- wp_reset_query();
- //需要重用同一個頁面的查詢結果時使用
- rewind_posts();
實例:
- $random_post = new WP_query();
- $random_post->query('cat=3&showposts=1&orderby=rand');
- while ($random_post->have_posts()) : $random_post->the_post();
- <a href="<?php the_permalink() ?>" title="<?php the_title(); ?>">
- <img src="<?php echo get_post_meta($random_post->ID, 'featured', true); ?>">
- </a>
- endwhile;
- wp_reset_postdata();
- <?php query_posts('posts_per_page=3');