WordPress 文章分类目录是一个对文章进行分类管理的常规状态,同时规范文章的分类目录也非常有利于网站本身的优化推广,便于搜索引擎对不同目录下文章的识别。所以利用好 WordPress 文章分类目录有利于整个网站的发展和整体维护,但是今天子凡我要分享的就是针对 WordPress 开发中可能会涉及到分类目录方面的功能。
熟悉 WordPress 的用户可能都清楚文章别名是唯一的,而利用文章别名做 URL 优化也是常规操作,所以不论是否使用分类目录都无法改变文章别名的唯一性,简而言之就是不同的分类目录下也无法存在同样别名,这就难免在一些使用场景中被限制,为此子凡我就在开发一个这样提升 WordPress 兼容性的小功能,其中就是需要快速的获取当前文章的分类目录 ID,以及顶级目录 ID,这样才能根据不同的分类目录和子目录检测和控制文章别名的重复。
// 获取指定文章当前所有分类目录 ID$post_id = 1024; $category_ids = wp_list_pluck(get_the_category($post_id), 'term_id'); // 获取指定文章当前分类的顶级目录 ID$top_category_ids = array_unique(array_map(fn($id) => ($ancestors = get_ancestors($id, 'category')) ? end($ancestors) : $id, $category_ids)); // 获取指定文章所有顶级目录 ID$post_id = 1024; $top_category_ids = array_unique(array_map(fn($cat) => ($ancestors = get_ancestors($cat->term_id, 'category')) ? end($ancestors) : $cat->term_id, get_the_category($post_id)));
其实主要就是用到了 wp_list_pluck、get_ancestors 这些 WordPress 默认函数,尽可能的避免直接采用 SQL 语句去数据库捞的繁琐和复杂程度,虽然有些时候可能直接查询数据库效率更高,但如果整体优化得到和 WordPress 开启了缓存的情况下,WordPress 多数默认函数都有良好的缓存,开发起来不仅更便捷,查询效率也会比每次直接去数据库要更快,加上很多功能只需要对 WordPress 后台运行,如果做了前后台分离的那就更不用担心影响网站性能了。
发表评论