導讀:WordPress 加 is_home() 判斷是否為首頁, 結果不生效, 可能的原因是 is_home() 之前有個 query_posts() 造成的,is_home() 函數在首頁的時候會返回...

WordPress 加 is_home() 判斷是否為首頁, 結果不生效, 可能的原因是 is_home() 之前有個 query_posts() 造成的,is_home() 函數在首頁的時候會返回一個 true 來判斷, 而 query_posts() 會阻斷這一判斷, 代碼如下:

  1. <?php if ( is_home() ) { ?> 
  2. 我只會在首頁顯示 
  3. <?php } ?> 

is_home(); 函數在首頁的時候會返回一個 true, 上面那段代碼是常用的只在首頁顯示, 插入任何模板頁 PHP 裏都可以, 例如側邊欄 sidebar.php 或頁腳 footer.php, 但如果它之前有個 query_posts(); 則會讓它失效, 原因是 is_home is_virgin is_ooxx 這種 is_ 前綴的都是基於主旋律循環來判斷, 而 query_posts(); 會讓其偏離主循環, 解決方案是在 is_home(); 之前加一個 wp_reset_query(); 代碼如下:

  1. <?php wp_reset_query(); if ( is_home() ) { ?> 
  2. 我只會在首頁顯示, 真的! 
  3. <?php } ?>

第二種, 當你使用指定的一個 page 頁面作為首頁時, 這種情況下 is_home() 是不起作用, 可以使用 is_front_page() 來判斷當前頁是不是指定的首頁, 我們在上面所描述的情況下需要的就是這個函數, 代碼如下:

  1. <?php if (is_home() || is_front_page()) { ?> 
  2. 首頁顯示代碼…………………… 
  3. <?php } ?>