wp_dropdown_categories 輸出修改

wp_dropdown_categories 這個模板標籤不管你有沒有設定固定網址,它輸出的 option value 一直都是 cat_ID。

我想他本來是設計用來方便分類管理,便沒有考慮固定網址設定的問題,而大家常用的 wp_list_categories 則會依設定輸出不同的結果。稍微修改了一下原始碼,讓這個標籤可以輸出固定網址的結果。

要修改的並不是 category-template.php 檔案,而是 classes.php 中 Walker_CategoryDropdown 這個類別:
原來是

662
663
$cat_name = apply_filters('list_cats', $category->cat_name, $category);
$output .= "\t<option value=\"".$category->cat_ID."\"";

修改成

662
663
664
665
666
667
$cat_name = apply_filters('list_cats', $category->cat_name, $category);
if(is_admin()){
	$output .= "\t<option value=\"".$category->cat_ID."\"";
}else{
	$output .= "\t<option value=\"".get_category_link($category->cat_ID)."\"";
}

搞定收工?嗯…最後要提,請記得修改換分類時的 submit form 內容或者 JavaScript。
註:若您的 WordPress 並未設定固定網址功能,那這篇直接跳過不用看;若有設定卻不會改…不改也沒關係,您的 WordPress 也會跑得很快樂。

更新:忘記在後台管理頁面測試一下,果然出錯,現在這個版本才對。