当前位置:首页 > 分类 > 网络百科 > 文章内容

网站顶端的标签归档页是很久之前参照网友的文章弄的,后来为了和谐又加了个分类归档页。这个页面调用的关键函数是 wp_list_categories(),相关的说明可以参见 wp_list_categories() | Function | WordPress Developer Resources

分类归档页是上图这样的,后面括号中的数字表示该分类下的文章数。一直以来看着都有点别扭,想把它改成“生活感悟(188 篇文章)”这种样式,只是之前不知道怎么弄。这两天稍微了解了下 WordPress 过滤器的用法,正好看到 wp_list_categories() 函数的代码中自建了跟函数同名的过滤器:

$html = apply_filters( 'wp_list_categories', $output, $args );

于是在主题 functions.php 里找了段相似代码,照葫芦画瓢的写了下面这段:

<?php
function customize_wp_list_categories( $output, $args ) {
	$pattern = '/<\/a>\s\((\d+)\)\s/i';
	$replacement = '</a>($1 篇文章)';
	$output = preg_replace( $pattern, $replacement, $output );
	return $output;
}
add_filter( 'wp_list_categories', 'customize_wp_list_categories', 10, 2 );
?>

最后的效果就是这样的:

另外 wp_list_categories() 函数输出分类,我设置为按照 ID 的顺序 'orderby' => 'id',却发现跟网页上面的导航栏顺序不一致。后台看了下才发现分类的 ID 并不是按照我预想的顺序排列的,这应该跟起初建站时创建分类出错又删除或者重命名等有关。所以网上找了下如何修改分类目录 ID,这里只记录使用 SQL 语句的方法。

update wp_terms set term_id = 4 where term_id = 21;
update wp_term_taxonomy set term_id = 4 where term_id = 21;
update wp_term_taxonomy set parent = 4 where parent = 21;
update wp_term_taxonomy set term_taxonomy_id = 4 where term_taxonomy_id = 21;
update wp_term_relationships set term_taxonomy_id = 4 where term_taxonomy_id = 21;

如上所示。其中 21 为目前的 ID,4 为想要修改为的 ID。

本页链接:https://www.syshut.com/customize-html-output-of-wp_list_categories.html | SYS 棚户区

自定义 wp_list_categories 函数 html 输出评论总数:8,访客评论:4,作者评论:4

    • sys

      @沉沦 :lol: 毕竟这也是我的一大爱好啊,虽然属于外行..

      [ 回复 ]
    • sys

      @姜辰 ..你这貌似是漫画里常用的表达方式,哈哈!

      [ 回复 ]
  1. 改ID干啥,不是有个orderby参数吗

    [ 回复 ]
    • sys

      @大致 orderby 达不成我想要的次序,否则也不必找这个麻烦了。另外说到底对 ID 是有点强迫症,这没法治

      [ 回复 ]

发表评论



快捷键:Ctrl + Enter