WordPress函数:wp_list_categories(分类列表)

2017年9月19日     tovey    

说明

将分类以列表的形式显示为链接。点击分类的链接,就可以访问该分类下的所有文章的存档页面。

注意: wp_list_categories() 和 list_cats() 以及 wp_list_cats() 的使用类似,但是后面 2 个已经弃用。

如果你希望不格式化输出分类,请使用 get_categories()

调用

  1. <?php wp_list_categories( $args ); ?>

默认用法

  1. <?php $args = array(
  2.     ‘show_option_all’    => ,
  3.     ‘orderby’            => ‘name’,
  4.     ‘order’              => ‘ASC’,
  5.     ‘style’              => ‘list’,
  6.     ‘show_count’         => 0,
  7.     ‘hide_empty’         => 1,
  8.     ‘use_desc_for_title’ => 1,
  9.     ‘child_of’           => 0,
  10.     ‘feed’               => ,
  11.     ‘feed_type’          => ,
  12.     ‘feed_image’         => ,
  13.     ‘exclude’            => ,
  14.     ‘exclude_tree’       => ,
  15.     ‘include‘            => ,
  16.     ‘hierarchical’       => 1,
  17.     ‘title_li’           => __( ‘Categories’ ),
  18.     ‘show_option_none’   => __(‘No categories’),
  19.     ‘number’             => null,
  20.     ‘echo‘               => 1,
  21.     ‘depth’              => 0,
  22.     ‘current_category’   => 0,
  23.     ‘pad_counts’         => 0,
  24.     ‘taxonomy’           => ‘category’,
  25.     ‘walker’             => null
  26. ); ?>

默认用法输出的效果:

  • 无连接的分类
  • 根据分类名称对分类列表进行升序排列
  • 以无序列表的样式显示
  • 不显示文章数量
  • 只显示有文章的分类
  • 设置标题属性到分类描述
  • 子分类无限制
  • 不显示Feed和Feed图像
  • 不排除任何分类,并包括所有分类
  • 为当前的分类添加CSS类’current-cat’
  • 以分层缩进的方式显示分类列表
  • 在列表的顶部显示“分类(Categories)”作为标题
  • 没有SQL限制(’number’ => 0 is not shown above)
  • 显示(输出)分类
  • 不限制显示的深度
  • 所有分类
  • 使用一个新的Walker_Category 类对象 walker 来显示列表

参数

show_option_all

(字符串)非空值会导致如果样式设置为列表显示所有类别的链接。默认值是不显示链接到所有分类。

orderby 

(字符串)以分类名称、分类ID或文章数量等为排列依据。有效值:

  • ID
  • name – 默认
  • slug
  • count
  • term_group

order 

(字符串)分类的排序顺序(升序或降序)。缺省为升序。有效值:

  • ASC – 升序(默认)
  • DESC – 降序

style

(字符串)分类列表显示的样式。将分类列表的方式显示(使用<br >标签分隔列表项)。默认设置为列表(无序列表)。有效值:

  • list – 默认
  • none

show_count

(布尔)显示文章数量。默认情况下不显示文章数量。有效值:

  • 1 (True)
  • 0 (False) – 默认

hide_empty

(布尔)隐藏没有文章的分类。  默认情况下隐藏没有文章的分类。有效值:

  • 1 (True) – 默认
  • 0 (False)

use_desc_for_title

(布尔)是否将分类描述作为分类链接中的 title 属性,默认为 true。有效值:

  • 1 (True) – 默认
  • 0 (False)

child_of

(整数)只显示此参数确定的分类的子分类。此参数没有默认值。

feed 

(字符串)显示每个分类的 RSS-2 Feed链接到设置的feed文字。默认不显示feed文字和链接。

feed_type

(字符串)

feed_image

(字符串)设置一个图片到分类的 RSS-2 Feed链接。这个参数会覆盖上面的 feed 参数。此参数没有默认值。

exclude 

(字符串)排除一个或多个分类。使用逗号分隔每个分类的ID。参数 include 必须为空。

exclude_tree

(字符串)排除分类树。使用逗号分隔每个分类的ID。参数 include 必须为空。如果 hierarchical 参数 为 true ,请使用 exclude 参数替代 exclude_tree 。

include 

(字符串)只显示特定的分类,使用逗号分隔每个分类的ID。

hierarchical

(布尔)以层级来显示分类的子分类。默认为 true(在分类的下面显示它们的子分类)。有效值:

  • 1 (True) – 默认
  • 0 (False)

title_li

(字符串)设置列表的标题。默认为“Categories”。如果存在这个参数,但是值为空,将无法显示列表。

number

(整数)设置显示的分类数量。定义SQL的限制值。默认为不限制。

echo

(布尔) 显示结果或保存在一个变量里。默认为 True 。有效值:

  • 1 (True) – 默认
  • 0 (False)

depth 

(整数)显示分类的深度(即显示多少层的子分类)。默认值为 0(显示所有分类和子分类)。有效值:

  • 0 – 所有分类和子分类(默认)
  • -1 – 所有类别显示在平面(不缩进)的形式(覆盖hierarchical)。
  • 1 – 只显示顶级分类
  • n – 根据n的具体数字来显示对应等级的分类。

current_category

(整数)后跟分类ID号,对此ID分类加入名为current-cat的CSS控制,用户自定义current-cat样式后,可用于突出显示。

pad_counts

(布尔)计算包括子分类的链接或文章数。如果 show_counts 和 hierarchical 为  true ,这个参数就自动设置为  true 。有效值:

  • 1 (true)
  • 0 (false) – 默认

taxonomy 

(字符串)要返回的分类法。该参数是在 3.0 中添加的。有效值:

  • category – 默认
  • taxonomy – 或任何其他已注册的分类法

walker 

(对象)生成列表 Walker 类。有效值:

object – an instance of a class that extends either Walker_Category or Walker

例子

包含或排除分类

按字母顺序排序分类,只包括类别ID为 16,3,9和5 的分类,你可以使用下面的代码:

  1. <ul>
  2. <?php wp_list_categories(‘orderby=name&include=3,5,9,16′); ?>
  3. </ul>

显示自定义分类法的项目

在3.0版本添加了taxonomy 参数到  wp_list_categories() 。让你可以通过 taxonomy 参数来设置要显示的是哪种分类法下的分类项目。比如要显示分类法为 genre 的分类列表:

  1. <?php
  2. //list terms in a given taxonomy using wp_list_categories (also useful as a widget if using a PHP Code plugin)
  3. $taxonomy     = ‘genre’;
  4. $orderby      = ‘name’;
  5. $show_count   = 0;      // 1 for yes, 0 for no
  6. $pad_counts   = 0;      // 1 for yes, 0 for no
  7. $hierarchical = 1;      // 1 for yes, 0 for no
  8. $title        = ;
  9. $args = array(
  10.   ‘taxonomy’     => $taxonomy,
  11.   ‘orderby’      => $orderby,
  12.   ‘show_count’   => $show_count,
  13.   ‘pad_counts’   => $pad_counts,
  14.   ‘hierarchical’ => $hierarchical,
  15.   ‘title_li’     => $title
  16. );
  17. ?>
  18. <ul>
  19. <?php wp_list_categories( $args ); ?>
  20. </ul>

显示文章对应的分类

根据父-子关系来排序文章的分类。类似于 get_the_category_list() 函数(根据名称排序分类)。下面的例子必须使用在循环中:

  1. <?php
  2. // get the category IDs assigned to post
  3. $categories = wp_get_post_categories( $post->ID, array( ‘fields’ => ‘ids’ ) );
  4. // separator between links
  5. $separator = ‘, ‘;
  6. if ( $categories ) {
  7.     $cat_ids = implode( ‘,’ , $categories );
  8.     $cats = wp_list_categories( ‘title_li=&style=none&echo=0&include=’ . $cat_ids );
  9.     $cats = rtrim( trim( str_replace( ‘<br />’,  $separator$cats ) ), $separator );
  10.     // display post categories
  11.     echo  $cats;
  12. }
  13. ?>

标记和样式化分类列表

默认情况下, wp_list_categories() 生成的是无序列表(ul),使用 <li> 标签来包含每个分类,而且列表的标题为”Categories”。

你可以通过设置 title_li 为空值来隐藏标题。你可以自定义包装 有序列表或无序列表。如果你不需要以列表输出分类,可以将 style 参数设置为 none。

你可以根据下面的CSS选择器来样式化输出:

  1. li.categories { … }  /* outermost list item */
  2.  li.cat-item { … }
  3.  li.cat-item-7 { … }  /* category ID #7, etc */
  4.  li.current-cat { … }
  5.  li.current-cat-parent { … }
  6.  ul.children { … }

函数历史

开始于 2.1 版本

2.3.0 : 添加 echo 参数

2.5.0 : 添加 depth 参数

2.6.0 : 添加 current_category 参数

2.7.1 : 添加 exclude_tree 参数

2.9.0 : 添加 pad_counts 参数

3.0.0 : 添加 taxonomy 参数

3.4.0 : 移除 show_last_update 参数

源文件

wp_list_categories() 位于 wp-includes/category-template.php.

分类: wordpress教程
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

分享到微信朋友圈

WordPress函数:wp_list_categories(分类列表)

打开微信,点击底部的“发现”
使用“扫一扫”即可将网页分享至朋友圈。

错误: 请输入一个有效的电子邮件地址

错误: 无效的邮箱

错误: 请输入您的姓氏

错误: 请输入你的名字

错误: 请输入用户名

错误: 请输入密码

错误: 请确认您的密码

错误: 密码和密码确认不匹配