WordPress 不同頁面顯示不一樣的側邊欄

2016-08-20 18:25:47

本文將告訴你如何在 WordPress 不同的頁面顯示不同的側邊欄內容. 如: 可以在首頁顯示 Archives, 但要在其他頁面顯示 Categories. 為什麼要這麼做呢? 因為訪客在不同的頁面會對不一樣的內容感興趣, 在首頁可能他們願意看到目錄和索引等內容, 而在單篇文章則會對文章相關內容更加關註. 所以我們可以通過不同的側邊欄 Widgets 來引導訪客.

這是個極其簡單的主題加工, 本不想多言, 但貌似有些朋友還是不太瞭解, 所以專門發個文章說說, 老鳥請繞行.

首先要說明的是, 以下操作目前隻能通過修改 sidebar.php 或相關代碼達到目的. 目前還沒發現有這樣的插件, 我不知道開發這樣一個針對 Widget 的插件是否有價值, 但有興趣的朋友可以一試.

Okay, 下面我們來個例子吧, 假如現在的 Widget 結構如下:

12345678
<div class="widget xxx_widget"><h3>Widget Title</h3><ul><li>Item 1</li><li>Item 2</li><li>Item 3</li></ul></div>

如果我們要在首頁顯示 Archives, 單篇文章顯示 Categories, 其他頁面顯示 Meta, 則需要改動代碼如下:

1234567891011121314151617181920212223
<?php if (is_home()) : ?><div class="widget archives_widget"><h3>Archives</h3><ul><?php wp_get_archives(); ?></ul></div><?php else if (is_single()) : ?><div class="widget categories_widget"><h3>Categories</h3><ul><?php wp_list_cats(); ?></ul></div><?php else : ?><div class="widget meta_widget"><h3>Meta</h3><ul><?php wp_register(); ?><li><?php wp_loginout(); ?></li></ul></div><?php endif; ?>

不知道你是否已經註意到, 其實關鍵在 is_home() 和 is_single() 方法的調用, 通過 if 語句限制顯示條件. 你可以將它們換成其他限制條件, 以達到不頁面的不同地方顯示不同內容的目的, 而不僅僅是側邊欄. 還可以參考一下我發佈過的那些主題裡 archive.php 文件裡 Archive 頁面的標題是怎麼實現的, 隻要這個你弄懂瞭, 其他的就小菜一碟瞭.

WordPress 已經為我們提供瞭足夠多的頁面篩選方法, 以下一些相關資料:
Codex 關於頁面限制方法的說明: WordPress Codex - Conditional Tags
你也可以打開 wp-includes/query.php 查看 WordPress 的源代碼.

來自:NeoEase