WordPress模板函数wp_list_categories


wp_list_categories() 位于 wp-includes/category-template.php.
wp_list_categories模板中分类列表函数
用法及参数详解举例
wp_list_categories 函数
WordPress 分类链接的函数
将分类以列表的形式显示为链接
输出 应当包含在 ul 标签内
wp_list_categories( string|array $args = '' )
默认用法
<?php
    wp_list_categories( $args );
    $args = array(
    'show_option_all'  => '',//是否列出分类链接 非空值 导致 样式设置为列表 显示所有类别的链接 默认 不显示链接到所有分类
    'orderby'      => 'name',//按名称排列 以分类名称 分类ID 文章数量等排列 有效值 ID/(name 默认) /slug/count/term_group
    'order'       => 'ASC',//升 降序 分类的排序顺序 默认为升序ASC  / DESC 降序
    'style'       => 'list',//是否用列表 ul>li 分类列表显示样式  分类列表的方式显示 使用<br >标签分隔列表项 默认设置为列表list(无序列表)/ none
    'show_count'     => 0,//是否显示文章数量   默认 不显示 有效值     1 (True) / 0 (False) - 默认
    'hide_empty'     => 1,//是否显示无日志分类 (布尔)隐藏没有文章的分类。  默认 隐藏 有效值     1 (True)  默认 /   0 (False)
    'use_desc_for_title' => 1,//是否显示分类描述 (布尔)是否将分类描述作为分类链接中的 title 属性,默认为 true
    'child_of'      => 0,//是否限制子分类(整数)只显示此参数确定的分类的子分类 没有默认值。
    'feed'        => '',//是否显示rss (字符串)显示每个分类的 RSS-2 Feed链接到设置的feed文字。默认不显示feed文字和链接
    'feed_type'     => '',//rss类型 (字符串)
    'feed_image'     => '',//是否显示rss图片 (字符串)设置一个图片到分类的 RSS-2 Feed链接 覆盖上面的 feed 参数 没有默认值
    'exclude'      => '',//排除分类的ID 多个用',(英文逗号)'分隔  参数 include 必须为空
    'exclude_tree'    => '',//排除分类树 即父分类及其下的子分类  使用逗号分隔每个分类的ID 参数include 必须为空 如果 hierarchical 参数 为 true  请使用 exclude 参数替代 exclude_tree
    'include'      => '',//包括的分类 只显示特定的分类 使用逗号分隔每个分类的ID
    'hierarchical'    => true,//是否将子 父分类分级  布尔 以层级来显示分类的子分类 默认true 在分类的下面显示子分类
    'title_li'      => __( 'Categories' ),//列表标题的名称  默认 Categories 如果存在这个参数 但是值为空 将无法显示列表
    'show_option_none'  => __('No categories'),//无分类时显示的标题
    'number'       => null,//显示分类的数量  定义SQL的限制值 默认 不限制
    'echo'        => 1,//是否显示 显示结果或保存在一个变量里 默认为 True
    'depth'       => 0,// 显示分类的深度(即显示多少层的子分类) 默认值为 0(显示所有分类和子分类) -1平面不缩进 覆盖hierarchical  1顶级分类 n显示对应等级的分类
    'current_category'  => 0,//整数 后跟分类ID号 对此ID分类加入名为current-cat的CSS控制 用户自定义current-cat样式后 突出显示
    'pad_counts'     => 0,//计算包括子分类的链接或文章数  如果 show_counts 和 hierarchical 为  true 这个参数就自动设置为true
    'taxonomy'      => 'category',//使用的分类法 默认category     其他已注册的分类法taxonomy
    'walker'       => null//生成列表 Walker 类  object - an instance of a class that extends either Walker_Category or Walker
    );
?>
包含或排除某分类
把分类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>
按名称排列
并显示每个分类的日志总数 并不显示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>
显示或隐藏列表标题
过滤ID为4和7的分类且列表标题设置为 遇见
<?php wp_list_categories('exclude=4,7&title_li=遇见'); ?>
列表只显示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>
只显示指定分类的子分类
显示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>
移除分类计数的括号
当 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>
显示分类和 RSS Feed 连接
根据分类名称进行排序 显示文章数量 并且显示每个分类的 RSS 订阅链接
<ul>
    <?php wp_list_categories( array(
        'orderby'    => 'name',
        'show_count' => true,
        'feed'       => 'RSS'
    ) ); ?>
</ul>
使用Feed 图标替换文本
使用下面的代码
<ul>
    <?php wp_list_categories( array(
        'orderby'    => 'name',
        'show_count' => true,
        'feed_image' => '/images/rss.gif'
    ) ); ?>
</ul>
显示自定义分类法的项目
版本3添加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 { ... } 
li.cat-item { ... }
li.cat-item-7 { ... } 
li.current-cat { ... }
li.current-cat-parent { ... }
ul.children { ... }