首页 > 分类 > 网络百科 > 文章内容

自定义 wp_list_categories 函数 html 输出

网站顶端的标签归档页是很久之前参照网友的文章弄的,后来为了和谐又加了个分类归档页。这个页面调用的关键函数是 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 里找了段相似代码,照葫芦画瓢的写了下面这段:

function customize_wp_list_categories( $output, $args ) {
	$pattern = '/<\/a>\s\((\d+)\)\s/i';
	$replacement = '($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。

您可能还会对这些文章感兴趣
评论总数 8(访客评论 4 / 作者评论 4)
    • @大致 orderby 达不成我想要的次序,否则也不必找这个麻烦了。另外说到底对 ID 是有点强迫症,这没法治

发表评论

您的电子邮箱地址不会被公开。必填项已用 * 标注

你好,新朋友!

emojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemoji