免插件製作 Wordpress 導航列

導航列 (breadcrumb) 對一些網站來說是很有用的,當網站內容多而層次又深時,真的很容易令人迷失方向。在網站內加入導航列,在瀏覽網站時就可以方便地跳回上層。

大部分 Wordpress 的 Template 都沒有導航列,因此很多朋友需要導航列時,首先想到的就是安裝插件。其實 Wordpress 有一個 Function (get_category_parents) ,加入在 Template 內就可顯示導航列,並不需要使用插件。

如果你還是不清楚什麼是導航列,看看以下例子:

主頁 > 產品 > 玩具 > 洋娃娃 >

純粹用 Wordpress 寫 blog 的朋友未必需要導航列,不過若用 Wordpress 當作內容管理系統 CMS 時導航列就很有用。

首先看看 get_category_parents 的用法:

get_category_parents(category, display link, separator, nice name);

category: category id
display link: 是否顯示連結 (Default: false)
separator: 即是用什麼符號分隔 category 和 sub-category
nice name: 是否顯示 category 的 nicename  (Default: false)

不知為什麼 Wordpress 的官方網站沒有這 Function 的文件,不過大家可參考這網頁,而使用的方法,則可參考 WordPress Categories Breadcrumb Navigation

其實使用這 Function 最重要是知道如何找出正確的 category id。Wordpress 的內容,主頁之外 (主頁一般不需要顯示導航列吧),可分為由 category 和 single post 兩個頁面顯示,在 template 內,分別是 category.php (或 archive.php) 和 single.php 這兩個檔案,而在兩個頁面中, category id 是由不同的方法取得。

在 single.php (即顯示一個 post 的頁面),加入導航列的方法就如上述連結的教學,先要取得 category id,因此加入的方法是:

  1. $current_categories = get_the_category();  // 一個 post 可分別屬於多個 category
  2. $current_category = $current_categories[0]->cat_ID; // 使用第一個 category
  3. echo ‘<div class="breadcrumb">’;
  4. echo ‘<a href="’ . get_option(‘home’) . ‘">主頁</a> » ‘;
  5. echo(get_category_parents($current_category, TRUE, ‘ » ‘));
  6. echo ‘</div>’;

而在 category.php / archive.php (即顯示一個 category 內的 posts 的頁面),則 category id 已儲存在 $cat 內,因此加入的方法可簡化為:

  1. echo
  2. <div class="breadcrumb">’;
  3. echo ‘<a href="’ . get_option(‘home’) . ‘">主頁</a> » ‘;
  4. echo(get_category_parents($cat, TRUE, ‘ » ‘));
  5. echo ‘</div>’;

以上方式的最大限制是如果你的 post 是屬於多個 category,則製作的導航列未必合你心意。

分享:

歡迎發表回應或 訂閱本站網誌

留言

未有留言

寫下留言

(必須)

(必須,不會顯示)