欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

wordpress判斷首頁is_home()為什么會失效,判斷不出首頁,或者判斷到分類頁了,解決方法!

老白7年前1763瀏覽0評論

第一次寫wordpress主題,就遇到is_home()判斷失敗!


第一種情況:

<div class="sidebar">
<?php 
if (is_home()){
if (function_exists('dynamic_sidebar') && dynamic_sidebar('widget_sidebar_home')) : else :
echo '<div class="widget"><div class="textwidget"><h3>注意</h3><span style="color: #f00;">請前往“后臺 - 外觀 - 小工具”設置 首頁右側欄 內容。</span></div></div>';
endif;
}elseif (is_category()){
if (function_exists('dynamic_sidebar') && dynamic_sidebar('widget_sidebar_cate')) : else :
echo '<div class="widget"><div class="textwidget"><h3>注意</h3><span style="color: #f00;">請前往“后臺 - 外觀 - 小工具”設置 分類右側欄 內容。</span></div></div>';
endif;
}elseif (is_single()||is_page()){
if (function_exists('dynamic_sidebar') && dynamic_sidebar('widget_sidebar_single')) : else :
echo '<div class="widget"><div class="textwidget"><h3>注意</h3><span style="color: #f00;">請前往“后臺 - 外觀 - 小工具”設置 文章、頁面右側欄 內容。</span></div></div>';
endif;
} else {
if (function_exists('dynamic_sidebar') && dynamic_sidebar('widget_sidebar_cate')) : else :
echo '<div class="widget"><div class="textwidget"><h3>注意</h3><span style="color: #f00;">請前往“后臺 - 外觀 - 小工具”設置 分類右側欄 內容。</span></div></div>';
endif; 
}
?>
</div>

上方代碼判斷側欄是沒有問題的吧?但是測試根本無法判斷!

原因:

如果is_home()之前有個 query_posts(),則會讓它本身判斷失效。原因是 is_home() 函數在首頁的時候會返回一個 true 來判斷,而 query_posts()會阻斷這一判斷。

解決方案是在 is_home()之前加一個 wp_reset_query()。

解決方法:

if (is_home())

之前加入:

wp_reset_query();

整體修改就是:

<div class="sidebar">
<?php 
wp_reset_query();	// 新增
if (is_home()){
if (function_exists('dynamic_sidebar') && dynamic_sidebar('widget_sidebar_home')) : else :
echo '<div class="widget"><div class="textwidget"><h3>注意</h3><span style="color: #f00;">請前往“后臺 - 外觀 - 小工具”設置 首頁右側欄 內容。</span></div></div>';
endif;
}elseif (is_category()){
if (function_exists('dynamic_sidebar') && dynamic_sidebar('widget_sidebar_cate')) : else :
echo '<div class="widget"><div class="textwidget"><h3>注意</h3><span style="color: #f00;">請前往“后臺 - 外觀 - 小工具”設置 分類右側欄 內容。</span></div></div>';
endif;
}elseif (is_single()||is_page()){
if (function_exists('dynamic_sidebar') && dynamic_sidebar('widget_sidebar_single')) : else :
echo '<div class="widget"><div class="textwidget"><h3>注意</h3><span style="color: #f00;">請前往“后臺 - 外觀 - 小工具”設置 文章、頁面右側欄 內容。</span></div></div>';
endif;
} else {
if (function_exists('dynamic_sidebar') && dynamic_sidebar('widget_sidebar_cate')) : else :
echo '<div class="widget"><div class="textwidget"><h3>注意</h3><span style="color: #f00;">請前往“后臺 - 外觀 - 小工具”設置 分類右側欄 內容。</span></div></div>';
endif; 
}
?>
</div>

解決了!


第二種情況:

當你的首頁不是默認的index.php的時候,而是在后臺指定了一個page頁面。這種情況下is_home()會失效,也就是說這樣子的情況下就不能再用is_home()來判斷。

is_front_page()是判斷當前頁是不是指定的首頁,我們在上面描述的情況下需要的就是這個函數。

<?php if (is_home() || is_front_page()) { ?>
我只會在首頁顯示
<?php } ?>

ps:我在使用多站點wordpress進行二次開發時,需要所有的站點均指定一個page作為首頁來顯示;而且,該page作為首頁顯示時,頁頭還要顯示一個banner圖片。這就需要對所有theme主題的page.php文件內使用上述代碼以判斷是否首頁。