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 { ... }
尊贵的董事大人
英文标题不为空时 视为本栏投稿
需要关键字 描述 英文标题