介紹
在模板文件中,我們可以根據能與某頁面相匹配的條件,利用條件標簽更改該頁面上將要顯示的內容以及內容的顯示方式。例如,如果希望在博客首頁文章列表的上方顯示一段文字,可以利用 is_home() 條件標簽輕松實現這一效果。
注:條件標簽與WordPress模板層級(Template Hierarchy)密切相關。
警告:你只能在WordPress的文章選擇(posts_selection)動作鉤子的后面使用條件標簽(WP動作鉤子是第一位的,通過它可以使用這些條件語句)。對于主題來說,這意味著如果你將這些條件標簽直接添加到 functions.php 文件的主體內(即在函數的外部),這些條件標簽將不會正常工作。
來源于:
https://www.wpdaxue.com/conditional-tags.html
原網頁下載:
條件
所有條件標簽都會檢查是否有條件可符合相應頁面,之后返回TRUE或者FALSE。下面列出能夠使各個條件標簽返回TRUE的條件。
主頁(The Main Page)
is_home()
顯示博客首頁時,該條件標簽返回TRUE。注意:如果將靜態頁面作為博客主頁(Front Page),該標簽會在?設置 > 閱讀?中設置的“文章頁(Posts page)”返回TRUE。
首頁(The Front Page)
is_front_page()
顯示博客頭版消息(無論是日志或是頁面)。當系統顯示博客主頁且管理面板的?設置?>?閱讀?菜單下“主頁顯示為”選項設為最近發表的文章”,或者?設置?>?閱讀?菜單下“主頁顯示為”選項設為且”主頁”是當前被顯示的頁面時,is_front_page()標簽返回TRUE。
管理面板
is_admin()
顯示儀表盤或后臺管理面板時,該標簽返回TRUE。
單篇日志頁面
is_single()
顯示任何單獨一篇日志時,is_single()標簽返回TRUE。
is_single(’17’)
顯示 ID 為17的單篇日志時,該標簽返回TRUE。
is_single(‘Irish Stew’)
顯示標題為”Irish Stew”的單篇日志時,該標簽返回TRUE。
is_single(‘beef-stew’)
顯示別名為”beef-stew”的單篇日志時,該標簽返回TRUE。
is_single(array(17,’beef-stew’,’Irish Stew’))
當所顯示的單篇日志 ID 為17,或 post_name 為”beef-stew”,或 post_title 為”Irish Stew”時,is_single(array(17,’beef-stew’,’Irish Stew’))標簽返回TRUE。
is_single( array( 17, 19, 1, 11 ) )
當所顯示的日志為 ID = 17,ID = 19, ID = 1 或者 ID = 11 時,該標簽返回TRUE。
is_single( array( ‘beef-stew’, ‘pea-soup’, ‘chili’ ) )
當顯示的單篇日志的 post_name 為 “beef-stew” 、 “pea-soup” 或 “chili” 時,該標簽返回 TRUE。
is_single( array( ‘Beef Stew’, ‘Pea Soup’, ‘Chili’ ) )
當顯示的單篇日志的 the post_title 為 “Beef Stew” 、”Pea Soup” 或 “Chili”時,該標簽返回 TRUE。
注: 該函數不區分 post ID、 post title 或 post name。如果請求的是 ID 為 17 的文章,post_name 為 17 的文章也會返回 TRUE;post title 為 17 的日志也一樣返回TRUE。
置頂文章
is_sticky()
若當前日志的”Stick this post to the front page(將該日志在首頁置頂)”復選框被選中,is_sticky()返回TRUE。此時標簽沒有提供日志的ID變量,因此系統會用到WordPress主循環the Loop的日志ID。
is_sticky(’17’)
若ID為17的日志被置頂,該標簽返回TRUE。
文章類型
get_post_type()
它不算一個真正的條件標簽,但將返回當前文章的已注冊的文章類型。例如:if ( ‘book’ == get_post_type() ) …
將返回文章類型為 ‘book’ 的文章。
is_singular()
任何單篇日志、頁面 或附件 都會返回 TRUE。 它允許用于文章類型的檢測。
post_type_exists()
如果所給的文章類型是一個已注冊的文章類型,就返回TRUE。它不會測試WordPress默認的文章類型。
文章類型層級
is_post_type_hierarchical( $post_type )
如果 $post_type 在注冊的時候就已被設置 支持層級(Hierarchical),就返回 TRUE。
is_post_type_hierarchical( ‘book’ )
如果 book 這種文章類型在注冊的時候就已被設置 支持層級,就返回TRUE。
文章類型存檔
is_post_type_archive()?
任何文章類型存檔頁面,都返回TRUE。
is_post_type_archive( $post_type )?
如果文章類型存檔頁面為 指定的 $post_type (可以是一種文章類型或一組文章類型),就返回TRUE。
要開啟文章類型存檔,請在注冊文章類型時,使用 ‘has_archive’ => true 。
評論彈出式窗口
is_comments_popup()
顯示的內容在評論彈出式窗口中時,該標簽返回TRUE。
comments_open()
若評論允許當前日志在WordPress主循環中運行,該標簽返回TRUE。
pings_open()
若引用通告ping允許當前日志在WordPress主循環中運行,該標簽返回TRUE。
PAGE 頁面
這里的PAGE指的是WordPress的“頁面”功能,而不是博客生成的網頁。
is_page()
顯示任何一篇頁面時,該標簽返回TRUE。
is_page(’42’)
顯示ID為42的頁面時,該標簽返回TRUE。
is_page(‘About Me And Joe’)
若顯示的頁面的post_name為”About Me And Joe”,該標簽返回TRUE。
is_page(‘about-me’)
若顯示的頁面的post_name(別名)為”about-me”,該標簽返回TRUE。
is_page(array(42,’about-me’,’About Me And Joe’))
當所顯示的頁面 ID 為42,或post_name為”about-me”,或post_title為”About Me And Joe”時,is_page(array(42,’about-me’,’About Me And Joe’))標簽返回TRUE。
is_page( array( 42, 54, 6 ) )
當頁面的 ID 為 42、 54 或 6 時,改標簽返回TRUE。
分頁
你可以使用這個代碼來檢測是否一篇 日志 或 PAGE頁面 被?<!–nextpage–>?標簽進行了分頁。這是非常有用的,例如你只想在劃分為多頁的 日志 的第一頁中顯示 meta-data 。