WordPress获取文章顶级分类目录信息

张子凡 WordPress优化 2022-02-28 00:15:00 阅读(...) 评论(2)

因为 WordPress 数据库结构设计的原因,有时候就级别多一点就需要循环了获取,如果分类目录层级多了,要想获取到顶级目录的信息还真的需要折腾一下,而且子凡也查询过 WordPress 并没有提供相关的函数来获取,所有自己干脆自己来封装了一个 WordPress 获取文章所在目录的顶级目录信息。

wordpress developer 开发

WordPress 获取分类目录的函数可以分为两个大类,一个是根据文章 ID 来获取当前文章的分类目录信息 get_the_category(),一个是根据分类目录 ID 类获取分类目录信息 get_category()。利用这两个函数就可以实现子凡我想要的功能了,代码如下:

1
2
3
4
5
6
7
8
9
10
11
/* 获取顶级分类目录信息
 * term_id name slug description
 * cat_ID category_description cat_name
 */
function fanly_basic_get_category_root( $pid, $meta='term_id' ){
	$cats = get_the_category($pid)[0] ?? '';
	while(@$cats->category_parent){ //有父分类时循环
		$cats = get_category(@$cats->category_parent);
	}
	return $cats->$meta ?? '';
}

其实从优化的角度来说,文章目录的 URL 深度太长了不好,而对于 WordPress 使用了 category 来做固定链接时,分类目录用来分类的嵌入尽可能的不要太多层,当然子凡个人人为使用一层就已经足够,如果使用到二级目录那么二次开发 WordPress 来固定只有一级目录。

更多关于WordPress优化及疑问可以添加QQ群:255308000

除非注明,否则均为泪雪博客原创文章,禁止任何形式转载

本文链接:https://zhangzifan.com/wordpress-get-category-root.html

发表评论

  1. 童主任
    1楼
    童主任 03月05日

    其实有个 get_ancestors 可以做到类似的事情,同时支持 获取post 或者 term。代码差不多。

    • 张子凡
      回复
      张子凡 03月09日
      回复 @童主任 :是的,get_ancestors函数查询的是父级目录ID的数组,我自己自定义只是为了方便一步到位的获取到指定的参数。