
本文将指导如何在WordPress中按自定义菜单顺序显示文章分类,并排除特定分类。我们将解释为何get_the_category()不适用于排序需求,并重点介绍如何利用wp_get_post_terms()函数及其orderby和exclude参数来高效实现这一功能,从而提升分类显示的灵活性和控制力。
在wordpress开发中,我们经常需要获取并显示文章所属的分类。然而,当需要按照特定顺序(例如,在后台菜单中定义的“菜单顺序”)来展示这些分类,并可能需要排除某些分类时,一些常用的函数可能无法满足需求。本文将深入探讨如何优雅地解决这一问题。
理解get_the_category()的局限性
get_the_category()是WordPress中一个非常常用的函数,用于获取当前文章所属的所有分类。它返回一个分类对象数组,包含了分类的ID、名称、别名等信息。然而,该函数的一个主要局限性在于它不提供直接的排序参数。这意味着你无法通过它来控制分类的显示顺序,它通常会按照默认的ID或名称顺序返回结果。
考虑以下常见的代码片段:
cat_ID !== 14){ echo esc_html($category->cat_name); }}?>
这段代码能够获取分类并排除特定ID,但它无法实现“菜单顺序”的排序。如果你的分类在后台菜单中经过了拖拽排序,get_the_category()无法感知并应用这种顺序。
wp_get_post_terms():实现自定义排序与排除的核心
为了克服get_the_category()的局限性,WordPress提供了更强大、更灵活的函数:wp_get_post_terms()。这个函数设计用于获取与文章关联的任何分类法术语(包括分类、标签、自定义分类法等),并支持丰富的查询参数,包括排序方式和排除项。
使用wp_get_post_terms()来按菜单顺序显示分类并排除特定项的核心代码如下:
'term_order', // 按菜单顺序排序 'exclude' => array(14) // 排除ID为14的分类));?>
详细参数解析与应用
wp_get_post_terms()函数接受三个主要参数:
$post_id:
此参数指定要获取其分类术语的文章ID。通常,我们会使用get_the_id()来动态获取当前循环中文章的ID。
$taxonomy:
此参数指定要查询的分类法。对于文章的默认分类,我们使用字符串’category’。如果你在使用自定义分类法,则应替换为该分类法的名称。
$args (数组):
这是一个关联数组,用于定义查询的各种选项。‘orderby’ => ‘term_order’: 这是实现“菜单顺序”的关键。在WordPress中,当分类术语被用于菜单项并手动排序时,其term_order字段会记录这个顺序。通过设置orderby为’term_order’,我们可以确保获取到的分类术语按照你在后台菜单中定义的顺序排列。‘exclude’ => array(14): 此参数接受一个ID数组,用于指定要从结果中排除的分类术语。在示例中,ID为14的分类将被排除。你可以根据需要添加多个ID,例如array(14, 20, 35)。
完整示例代码
结合上述参数,以下是一个完整的代码示例,演示如何获取、遍历并显示按菜单顺序排序且排除特定分类的文章分类:
'term_order', // 按菜单顺序排序 'exclude' => array(14) // 排除ID为14的分类 )); // 检查结果是否为空或是否存在错误 if ( ! empty( $categories ) && ! is_wp_error( $categories ) ) { echo '文章分类:
'; echo ''; } else { echo '当前文章没有符合条件的分类。
'; }endif; // 结束文章循环?>注意事项与扩展思考
错误处理与空结果: 始终建议在使用wp_get_post_terms()的结果之前,通过! empty()和! is_wp_error()进行检查。这可以防止在没有分类或查询失败时出现PHP错误。输出格式: 示例代码中将分类显示为带有链接的无序列表。你可以根据网站的设计和需求,自由调整输出的HTML结构和样式。其他排序选项: orderby参数非常灵活,除了’term_order’,还支持其他值,如:’name’:按分类名称字母顺序。’slug’:按分类别名字母顺序。’id’:按分类ID。’count’:按分类下文章数量。’none’:不排序。包含特定分类: 如果你只想显示特定的几个分类,可以使用’include’ => array(2, 5, 8)参数,它会覆盖exclude参数。性能考量: 对于大多数网站而言,wp_get_post_terms()的性能开销可以忽略不计。但在处理大量分类或在极高流量的场景下,可以考虑使用WordPress的转瞬缓存(Transients API)来缓存查询结果,以进一步优化性能。
总结
通过本文的介绍,我们了解到get_the_category()在处理分类排序方面的局限性,并掌握了使用wp_get_post_terms()函数及其orderby和exclude参数来精确控制WordPress文章分类显示的方法。利用’orderby’ => ‘term_order’,开发者能够轻松实现按后台菜单顺序排列分类的需求,同时通过’exclude’参数灵活排除不需要的分类。这种方法不仅提升了分类显示的灵活性,也使得网站内容的组织和呈现更加符合设计预期。
以上就是WordPress中按菜单顺序显示文章分类的技巧的详细内容,更多请关注php中文网其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1321779.html
微信扫一扫
支付宝扫一扫