WordPress分類列表函數:wp_list_categories用法及參數詳解舉例
http://www.511yj.com/wordpress-wp-categories.html
註意:
1、 wp_list_categories() 和 list_cats() 以及 wp_list_cats() 的使用類似,但是後面 2 個已經棄用。
2、如果你希望不格式化輸出分類,請使用 get_categories()
3、因為 WordPress 中內置擴展的小工具功能,所以我們不經任何函數就可以在邊欄或是其他我們想要的位置顯示一個分類列表,所以wp_list_categories函數就很少有人用到。
4、該函數使用起來有點類似於wp_list_bookmarks()
5、該函數輸出 應當包含在 ul 標簽內
使用方法
wp_list_categories( string|array $args = ‘‘ )
默認用法
<?php wp_list_categories( $args ); $args = array( ‘show_option_all‘ => ‘‘,//是否列出分類鏈接 ‘orderby‘ => ‘name‘,//按名稱排列 ‘order‘ => ‘ASC‘,//升、降序 ‘style‘ => ‘list‘,//是否用列表(ul>li) ‘show_count‘ => 0,//是否顯示文章數量 ‘hide_empty‘ => 1,//是否顯示無日誌分類 ‘use_desc_for_title‘ => 1,//是否顯示分類描述 ‘child_of‘ => 0,//是否限制子分類 ‘feed‘ => ‘‘,//是否顯示rss ‘feed_type‘ => ‘‘,//rss類型 ‘feed_image‘ => ‘‘,//是否顯示rss圖片 ‘exclude‘ => ‘‘,//排除分類的ID,多個用‘,(英文逗號)‘分隔 ‘exclude_tree‘ => ‘‘,//排除分類樹,即父分類及其下的子分類 ‘include‘ => ‘‘,//包括的分類 ‘hierarchical‘ => true,//是否將子、父分類分級 ‘title_li‘ => __( ‘Categories‘ ),//列表標題的名稱 ‘show_option_none‘ => __(‘No categories‘),//無分類時顯示的標題 ‘number‘ => null,//顯示分類的數量 ‘echo‘ => 1,//是否顯示,顯示或者返回字符串 ‘depth‘ => 0,//層級限制 ‘current_category‘ => 0,//添加一個沒有的分類 ‘pad_counts‘ => 0,//這個我也不明白 ‘taxonomy‘ => ‘category‘,//使用的分類法 ‘walker‘ => null//用於顯示的類 ?>
用法舉例
1、包含或排除某分類:
意思就是把分類ID為3,5,9,16的分類按名稱順序來排序:
<?php wp_list_categories(‘orderby=name&include=3,5,9,16‘); ?>
或者
<ul> <?php wp_list_categories( array( ‘orderby‘ => ‘name‘, ‘include‘ => array( 3, 5, 9, 16 ) ) ); ?> </ul>
2、按名稱排列,並顯示每個分類的日誌總數,並不顯示ID為10的分類:
<?php wp_list_categories(‘orderby=name&show_count=1&exclude=10‘); ?>
或者
<ul> <?php wp_list_categories( array( ‘orderby‘ => ‘name‘, ‘show_count‘ => true, ‘exclude‘ => array( 10 ) ) ); ?> </ul>
3、顯示或隱藏列表標題:
過濾ID為4和7的分類,並且列表標題設置為“511遇見”:
<?php wp_list_categories(‘exclude=4,7&title_li=511遇見‘); ?>
4、列表中只顯示ID為5、9、23的分類,並把列表標題改為 Poetry (下面的格式是為了把“要顯示的數據”和“標簽參數區分開來”)
<?php wp_list_categories(‘include=5,9,23&title_li=<h2>‘ . __(‘Poetry‘) . ‘</h2>‘ ); ?>
或者
<ul> <?php wp_list_categories( array( ‘include‘ => array( 5, 9, 23 ), ‘title_li‘ => ‘<h2>‘ . __( ‘Poetry‘, ‘textdomain‘ ) . ‘</h2>‘ ) ); ?> </ul>
title_li參數設置或隱藏一個標題或標題wp_list_categories生成的類別列表。它默認為”(__(類別)”,即它顯示這個詞“類別”列表的標題。如果這個參數設置為null或空值,不顯示標題。下面的示例代碼不包括類別id 4和7和隱藏列表標題:
<ul> <?php wp_list_categories( array( ‘exclude‘ => array( 4,7 ), ‘title_li‘ => ‘‘ ) ); ?> </ul>
5、只顯示指定分類的子分類
顯示ID為 8 的分類的子分類,根據ID排序,顯示文章數,並且將分類描述作為連接的 title屬性。註意:如果父分類沒有文章,將不顯示父分類。
<ul> <?php wp_list_categories(‘orderby=id&show_count=1&use_desc_for_title=0&child_of=8‘); ?> </ul>
或者:
<ul> <?php wp_list_categories( array( ‘orderby‘ => ‘id‘, ‘show_count‘ => true, ‘use_desc_for_title‘ => false, ‘child_of‘ => 8 ) ); ?> </ul>
6、移除分類計數的括號
當 show_count=1 ,每個分類的後面都將顯示文章數,同時使用括號包含。如果你要移除括號,可以使用下面的代碼
<ul> <?php $variable = wp_list_categories( array( ‘echo‘ => false, ‘show_count‘ => true, ‘title_li‘ => ‘<h2>‘ . __( ‘Categories‘, ‘textdomain‘ ) . ‘</h2>‘ ) ); $variable = preg_replace( ‘~\((\d+)\)(?=\s*+<)~‘, ‘$1‘, $variable ); echo $variable; ?> </ul>
7、顯示分類和 RSS Feed 連接
根據分類名稱進行排序,顯示文章數量,並且顯示每個分類的 RSS 訂閱鏈接:
<ul> <ul> <?php wp_list_categories( array( ‘orderby‘ => ‘name‘, ‘show_count‘ => true, ‘feed‘ => ‘RSS‘ ) ); ?> </ul> </ul>
使用Feed 圖標替換文本,可以使用下面的代碼:
<ul> <?php wp_list_categories( array( ‘orderby‘ => ‘name‘, ‘show_count‘ => true, ‘feed_image‘ => ‘/images/rss.gif‘ ) ); ?> </ul>
顯示自定義分類法的項目:
在3.0版本添加了taxonomy 參數到 wp_list_categories() 。讓你可以通過 taxonomy 參數來設置要顯示的是哪種分類法下的分類項目。比如要顯示分類法為 genre 的分類列表:
// List terms in a given taxonomy using wp_list_categories (also useful as a widget if using a PHP Code plugin) $taxonomy = ‘genre‘; $orderby = ‘name‘; $show_count = false; $pad_counts = false; $hierarchical = true; $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>
顯示文章對應的分類:
根據父-子關系來排序文章的分類。類似於 get_the_category_list() 函數(根據名稱排序分類)。這個例子必須使用內循環。
$taxonomy = ‘category‘; // Get the term IDs assigned to post. $post_terms = wp_get_object_terms( $post->ID, $taxonomy, array( ‘fields‘ => ‘ids‘ ) ); // Separator between links. $separator = ‘, ‘; if ( ! empty( $post_terms ) && ! is_wp_error( $post_terms ) ) { $term_ids = implode( ‘,‘ , $post_terms ); $terms = wp_list_categories( array( ‘title_li‘ => ‘‘, ‘style‘ => ‘none‘, ‘echo‘ => false, ‘taxonomy‘ => $taxonomy, ‘include‘ => $term_ids ) ); $terms = rtrim( trim( str_replace( ‘<br />‘, $separator, $terms ) ), $separator ); // Display post categories. echo $terms; }
標記和樣式化分類列表
默認情況下, wp_list_categories() 生成的是無序列表(ul),使用 li 標簽來包含每個分類,而且列表的標題為"Categories"。
你可以通過設置 title_li 為空值來隱藏標題。你可以自定義包裝 有序列表或無序列表。如果你不需要以列表輸出分類,可以將 style 參數設置為 none。
你可以根據下面的CSS選擇器來樣式化輸出:
li.categories { ... } /* outermost list item */ li.cat-item { ... } li.cat-item-7 { ... } /* category ID #7, etc */ li.current-cat { ... } li.current-cat-parent { ... } ul.children { ... }
小結
1、官方文檔:https://developer.wordpress.org/reference/functions/wp_list_categories/
2、因為我們沒有必要再使用這個函數,最讓我們心動的就是最後這個CSS的改變,這樣可以讓你更靈活的顯示在前臺,比如有人問,如何去掉函數中封裝的 li 標簽,這樣問的原因我猜主要是它的布局不是采用了 li 標簽,或者一些樣式加布進去,所以你多多研究一下總後一個例子還是很有必要的。
3、如何去掉li
<?php wp_list_categories(‘style=none‘); ?>
WordPress分類列表函數:wp_list_categories用法及參數詳解舉例