wp_list_categories 函數(shù)描述
乍一看函數(shù)名,還以為只能列出默認(rèn)分類目錄下面的分類項(xiàng)目呢?深入研究了一下才知道,原來(lái)這個(gè)函數(shù)也是可以列出所有自定義分類法下面的分類項(xiàng)目的。這個(gè)函數(shù)的作用是根據(jù)指定的條件,列出某個(gè)分類法下面所有的分類項(xiàng)目的分類鏈接。
使用方法
<?php wp_list_categories( $args ); ?>
默認(rèn)使用
<?php $args = array(
'show_option_all' => '', //(字符串)是否顯示到所有分類的鏈接,默認(rèn)為空,不顯示
'orderby' => 'name', //(字符串)排序依據(jù),可以用分類名稱,分類ID,或者分類文章數(shù)排序,可用的值有:ID,name(默認(rèn)),slug,count,term_group
'order' => 'ASC', //(字符串)排序方式,正序或倒序,可用的值有:ASC,DESC
'style' => 'list', //(字符串)列表或無(wú)列表,可用的值有:list(默認(rèn)),none
'show_count' => 0, //(布爾值)是否顯示分類里面文章數(shù)量的開(kāi)關(guān),默認(rèn)為不顯示
'hide_empty' => 1, //(布爾值)是否顯示空分類--沒(méi)有文章的分類顯示出來(lái)也是404頁(yè)面,還不如隱藏了,所以默認(rèn)為隱藏
'use_desc_for_title' => 1, //(布爾值)默認(rèn)以分類描述作為分類鏈接的title屬性,顯示出來(lái)對(duì)SEO優(yōu)化和用戶體驗(yàn)提高是有幫助的,默認(rèn)為顯示
'child_of' => 0, //(布爾值)只顯示指定分類的自分類,這算是一個(gè)小功能,默認(rèn)為假
'feed' => '', //(字符串)是否顯示一個(gè)分類rss2訂閱源的文字,默認(rèn)為空,看需要
'feed_type' => '', // (字符串)訂閱源的類型
'feed_image' => '', // (字符串)顯示一個(gè)表示訂閱源的小圖標(biāo)。此參數(shù)覆蓋feed參數(shù)的值
'exclude' => '', // (字符串)從結(jié)果中排序某些分類,值為以逗號(hào)分隔的分類項(xiàng)ID,不能和include同時(shí)使用
'exclude_tree' => '', // (字符串)和上面的exclude作用一樣,不同的是,這個(gè)排除的是有子分類的分類項(xiàng)
'include' => '', // (字符串)結(jié)果中只包含某些分類項(xiàng)
'hierarchical' => 1, // (布爾值)是否分層顯示父級(jí)分類和子分類
'title_li' => __( 'Categories' ), //(字符串)分類列表的標(biāo)題,默認(rèn)為分類目錄,可根據(jù)需要設(shè)置
'show_option_none' => __('No categories') ,//(字符串)沒(méi)有分類的情況下顯示的問(wèn)題
'number' => null, //(整數(shù)),
'echo' => 1, // (布爾值)是否顯示出來(lái),控制直接顯示列表,還是保存在某個(gè)變量中
'depth' => 0, // (整數(shù)) 是否分層顯示列表,默認(rèn)為0,分層顯示所有分類和自分類,-1為不分層顯示所有分類,1為只顯示頂級(jí)分類,n為顯示n級(jí)分類
'current_category' => 0, // (字符串)當(dāng)前分類項(xiàng),設(shè)置某項(xiàng)為當(dāng)前分類項(xiàng)
'pad_counts' => 0, // (布爾值)通過(guò)自分類里的項(xiàng)目計(jì)算鏈接或文章數(shù)
'taxonomy' => 'category', //(字符串)顯示某個(gè)自定義分類法下面的分類項(xiàng)目
'walker' => null //(對(duì)象),生成列表所用的類
); ?>
使用示例
包含或排除分類
通過(guò)分類名排序,包含 ID 為 16, 3, 9, 5 的分類項(xiàng),我們可以這樣做:
<ul>
<?php wp_list_categories('orderby=name&include=3,5,9,16'); ?>
</ul>
下面的代碼演示了顯示通過(guò)名稱排序,顯示分類里的文章數(shù)量,并且排序 ID 為 10 的分類的方法:
<ul>
<?php wp_list_categories('orderby=name&show_count=1&exclude=10'); ?>
</ul>
顯示或隱藏分類列表標(biāo)題
不想顯示分類列表的標(biāo)題其實(shí)很簡(jiǎn)單,只需要把 title_li 參數(shù)的值留空就可以了,如下:
<ul>
<?php wp_list_categories('exclude=4,7&title_li='); ?>
</ul>
下面,我們只顯示 ID 為 9, 5, 23 的分類,并設(shè)置分類列表的標(biāo)題為 H2 包裹 Poetry:
<ul>
<?php wp_list_categories('include=5,9,23&title_li=<h2>' . __('Poetry') . '</h2>' ); ?>
</ul>
只顯示某個(gè)分類的子分類
有時(shí)候,我們需要顯示某個(gè)分類的自分類(在開(kāi)發(fā)cms或商城站點(diǎn)的時(shí)候,這個(gè)需求很常見(jiàn)),只需要把父級(jí)分類的 ID 賦給 child_of 參數(shù)就可以了。
<ul>
<?php wp_list_categories('orderby=id&show_count=1&use_desc_for_title=0&child_of=8'); ?>
</ul>
移除分類包括分類數(shù)的括號(hào)
如果設(shè)置了show_count=1, 每個(gè)分類后面會(huì)顯示一個(gè)用括號(hào)括起來(lái)的分類數(shù)量,我們可以通過(guò)正則表達(dá)式替換的方式,去掉這個(gè)括號(hào)。
<?php
$variable = wp_list_categories('echo=0&show_count=1&title_li=<h2>Categories</h2>');
$variable = preg_replace('~\((\d+)\)(?=\s*+<)~', '$1', $variable);
echo $variable;
?>
顯示帶 RSS 鏈接的分類列表
對(duì)于經(jīng)常更新的資訊類站點(diǎn),RSS 不失為留住用戶的一種好方式,設(shè)置 feed 參數(shù)的值為 RSS,就可以在分類列表后面顯示一個(gè) RSS 鏈接,非常實(shí)用。
<ul>
<?php wp_list_categories('orderby=name&show_count=1&feed=RSS'); ?>
</ul>
如果嫌文字不夠明顯,用一個(gè)自定義 RSS 圖標(biāo)代替也是可以的,不過(guò) RSS 圖標(biāo)的路徑一定要弄對(duì)了。
<ul>
<?php wp_list_categories('orderby=name&show_count=1&feed_image=/images/rss.gif'); ?>
</ul>
顯示自定義分類法中的分類項(xiàng)
WordPress 3.0 以后,wp_list_categories() 增加了自定義分類法的參數(shù)以便我們顯示自定義分類法分類項(xiàng)列表,下面演示了怎么顯示自定義分類法 genre 的分類項(xiàng)
<?php
$taxonomy = 'genre';
$orderby = 'name';
$show_count = 0; // 1 為是, 0 為否
$pad_counts = 0; // 1 為是, 0 為否
$hierarchical = 1; // 1 為是, 0 為否
$title = '';
$args = array(
'taxonomy' => $taxonomy,
'orderby' => $orderby,
'show_count' => $show_count,
'pad_counts' => $pad_counts,
'hierarchical' => $hierarchical,
'title_li' => $title
);
?>
<ul>
<?php wp_list_categories( $args ); ?>
</ul>
顯示某篇文章的分類
我們還可以通過(guò)父子分類關(guān)系顯示某篇文章的分類,其實(shí)這個(gè)功能直接用 get_the_category_list() 實(shí)現(xiàn)更直接更方便,這里只是說(shuō)明一下我們可以這樣做,平時(shí)使用中,建議使用后者。下面的代碼必須在 loop 中使用
$taxonomy = 'category';
// 獲取某篇文章的分類id
$post_terms = wp_get_object_terms( $post->ID, $taxonomy, array( 'fields' => 'ids' ) );
// 用逗號(hào)分隔不同的分類鏈接
$separator = ', ';
if ( !empty( $post_terms ) && !is_wp_error( $post_terms ) ) {
$term_ids = implode( ',' , $post_terms );
$terms = wp_list_categories( 'title_li=&style=none&echo=0&taxonomy=' . $taxonomy . '&include=' . $term_ids );
$terms = rtrim( trim( str_replace( '<br />', $separator, $terms ) ), $separator );
// 顯示分類鏈接
echo $terms;
}
分類列表的標(biāo)記和樣式
默認(rèn)情況下,wp_list_categories 輸出以“Categories”為標(biāo)題的無(wú)需列表,我們可以用過(guò)下面的 CSS 選擇器美化分類列表的樣式:
li.categories { ... } /* 最外層 */
li.cat-item { ... }
li.cat-item-7 { ... } /* 某個(gè)分類的 #7 */
li.current-cat { ... }
li.current-cat-parent { ... }
ul.children { ... }



博主大神你好,想請(qǐng)問(wèn)一下,獲取4個(gè)隨機(jī)的分類:’orderby’=> ‘rand’,number=‘4’,但是我想刷新的時(shí)候,這幾個(gè)分類目錄重置更換隨機(jī),這種有辦法做到嗎?