WordPress 中的类别和标签是您在撰写或编辑帖子时始终会在右侧边栏中找到的内容,前端一般会需要出现在文章的详情页右侧或者左侧侧边栏,帮助用户去切换到相应的分类查看信息。
那么在WordPress模板中,使用什么代码来调用分类栏目呢?
一般的调用,也是官方的调用标签:
示例:<?php wp_list_categories(); ?>:显示 Categories 列表
示例详解:<?php wp_list_categories( $args ); ?> 
<?php $args = array(
	'show_option_all'    => '',//无连接的分类
	'orderby'            => 'name',//根据分类名称对分类列表进行升序排列
	'order'              => 'ASC',//
	'style'              => 'list',//以无序列表的样式显示
	'show_count'         => 0,//不显示文章数量
	'hide_empty'         => 1,//只显示有文章的分类
	'use_desc_for_title' => 1,//设置标题属性到分类描述
	'child_of'           => 0,//子分类无限制
	'feed'               => '',//不显示Feed和Feed图像
	'feed_type'          => '',//
	'feed_image'         => '',
	'exclude'            => '',//不排除任何分类,并包括所有分类
	'exclude_tree'       => '',
	'include'            => '',
	'hierarchical'       => 1,
	'title_li'           => __( 'Categories' ),//在列表的顶部显示“分类(Categories)”作为标题
	'show_option_none'   => __('No categories'),//显示(输出)分类
	'number'             => null,
	'echo'               => 1,
	'depth'              => 0,//不限制显示的深度
	'current_category'   => 0,//为当前的分类添加CSS类’current-cat
	'pad_counts'         => 0,
	'taxonomy'           => 'category',
	'walker'             => null  //使用一个新的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 类。
如果想更好的控制输出的分类样式,怎么办?
在WordPress中,您可以使用get_terms函数来获取文章分类或标签的信息。以下是一个简单的例子,演示如何调用文章分类标签:
<?php
// 获取所有文章分类
$categories = get_terms(array(
    'taxonomy' => 'category', // 分类法的名称,默认是 'category'
    'hide_empty' => false, // 是否隐藏没有文章的分类
));
// 遍历分类并输出
foreach ($categories as $category) {
    echo '<a href="' . get_category_link($category->term_id) . '">' . $category->name . '</a><br>';
}
// 获取所有文章标签
$tags = get_terms(array(
    'taxonomy' => 'post_tag', // 标签法的名称,默认是 'post_tag'
    'hide_empty' => false, // 是否隐藏没有文章的标签
));
// 遍历标签并输出
foreach ($tags as $tag) {
    echo '<a href="' . get_tag_link($tag->term_id) . '">' . $tag->name . '</a><br>';
}
?>
在上面的例子中,我们使用了get_terms函数来获取分类和标签的信息,并通过循环输出了它们的链接。您可以将上述代码放置在WordPress主题文件的适当位置,以在您的网站上显示分类和标签链接。
如果不是原生的blog栏目,自定义的分类栏目如何调用?
<?php
    $categories = get_terms(array(
        'taxonomy' => 'product-category',//这个就是自定义分类,记得这个地方一定记得修改
        'parent' => 0, // 只获取*分类
        'hide_empty' => false,
    ));
    foreach ($categories as $category) {
        echo '<li><a href="' . get_category_link($category->term_id) . '">' . $category->name . '</a></li>';
    }
?>需要不显示子category,上面代码如何修改?
如果您想排除显示子分类,可以使用parent参数。以下是修改后的代码:
<?php
// 获取所有*文章分类
$categories = get_terms(array(
    'taxonomy' => 'category',
    'parent' => 0, // 只获取*分类
    'hide_empty' => false,
));
foreach ($categories as $category) {
    echo '<a href="' . get_category_link($category->term_id) . '">' . $category->name . '</a><br>';
}
// 获取所有文章标签
$tags = get_terms(array(
    'taxonomy' => 'post_tag',
    'hide_empty' => false,
));
foreach ($tags as $tag) {
    echo '<a href="' . get_tag_link($tag->term_id) . '">' . $tag->name . '</a><br>';
}
?>
通过在get_terms函数中设置parent参数为0,只获取*分类,从而排除了显示子分类。这样,您可以确保只显示*分类和标签。
具体实操代码:
<aside class="widget widget-categories">
    <div class="widget-title">
        <h6>Categories</h6>
    </div>
    <!--<?php wp_list_categories('orderby=name'); ?>-->//官方代码,加了排序的参数
    <!--<?php wp_list_categories(); ?>-->//官方的标准代码,不加任何参数
    <ul>
        <!--<li><a href="/category/news/">News</a></li>-->//直接写链接,固定的写法
        <?php
            $categories = get_terms(array(
                'taxonomy' => 'category',
                'hide_empty' => false,
            ));
            foreach ($categories as $category) {
                echo '<li><a href="' . get_category_link($category->term_id) . '">' . $category->name . '</a></li>';
            }
        ?>//这个是比较好控制样式的写法
    </ul>
</aside>更加具体请参考:https://www.wpdaxue.com/wp_list_categories.html
 
