wordpree提供的tag很方便,幫助我們的讀者在找文章時,提供一個非常快的捷徑。
但是如果想把wordpress當做一般網站的cms,tag的使用方法就必須慎重的規劃。除此之外,tag的排序也是一大困擾。預設的情況下,wordpress會自動幫我們的tag依照名稱順序做排列。所以如果我們的tag是「256MB」、「512MB」、「1GB」、「16GB」,那麼排出來的順序會變成:
「16GB」「1GB」「256MB」「512MB」
這點會讓使用者很困擾,因為他不是依一般的順序(容量)來排列。然後不管我們再怎麼用力找,在預設的管理後台就是找不到幫tag排序的功能,而且連可以拿來運用的地方都沒有。
所以,要修正這一點,我們還必須先安裝Tag or Category term_group order這個外掛,之後再自己寫一個function給wordpress作為參考。
- 在function.php加入function record_sort()
function record_sort($records, $field, $reverse=false){ $hash = array(); foreach($records as $record){ $hash[$record->{$field}] = $record; } ($reverse)? krsort($hash) : ksort($hash); $records = array(); foreach($hash as $record){ $records []= $record; } return $records; }
- 到theme中顯示tag的頁面修改,以twentyeleven的tag.php為例,就要把原本的
printf( __( 'Tag Archives: %s', 'twentyeleven' ), '<span>' . single_tag_title( '', false ) . '</span>' );
改成
$tags = record_sort(get_the_tags(), "term_group"); if ($tags) { foreach ($tags as $tag) { echo '<a rel="tag" href="'.get_tag_link( $tag->term_id ).'">'.$tag->name.'</a> '; } }
Tag or Category term_group order讓我們可以再管理tag的地方多一個「Group」的地方可以輸入
然後我們在以它為基準來做排列。當然,我們可以有更多其他的運用,就慢慢去挖掘嚕。