
在wordpress开发中,我们经常需要获取并显示文章所属的分类。然而,当需要按照特定顺序(例如,在后台菜单中定义的“菜单顺序”)来展示这些分类,并可能需要排除某些分类时,一些常用的函数可能无法满足需求。本文将深入探讨如何优雅地解决这一问题。
get_the_category()是WordPress中一个非常常用的函数,用于获取当前文章所属的所有分类。它返回一个分类对象数组,包含了分类的ID、名称、别名等信息。然而,该函数的一个主要局限性在于它不提供直接的排序参数。这意味着你无法通过它来控制分类的显示顺序,它通常会按照默认的ID或名称顺序返回结果。
考虑以下常见的代码片段:
<?php
$categories = get_the_category();
foreach($categories as $category) {
// 假设用户希望排除ID为14的分类,并按菜单顺序显示
if($category->cat_ID !== 14){
echo esc_html($category->cat_name);
}
}
?>这段代码能够获取分类并排除特定ID,但它无法实现“菜单顺序”的排序。如果你的分类在后台菜单中经过了拖拽排序,get_the_category()无法感知并应用这种顺序。
为了克服get_the_category()的局限性,WordPress提供了更强大、更灵活的函数:wp_get_post_terms()。这个函数设计用于获取与文章关联的任何分类法术语(包括分类、标签、自定义分类法等),并支持丰富的查询参数,包括排序方式和排除项。
使用wp_get_post_terms()来按菜单顺序显示分类并排除特定项的核心代码如下:
<?php
$terms = wp_get_post_terms( get_the_id(), 'category', array(
'orderby' => 'term_order', // 按菜单顺序排序
'exclude' => array(14) // 排除ID为14的分类
));
?>wp_get_post_terms()函数接受三个主要参数:
$post_id:
$taxonomy:
$args (数组):
结合上述参数,以下是一个完整的代码示例,演示如何获取、遍历并显示按菜单顺序排序且排除特定分类的文章分类:
<?php
// 确保在WordPress循环或有文章ID可用的上下文中运行
if ( have_posts() ) : the_post();
$post_id = get_the_id(); // 获取当前文章ID
// 使用 wp_get_post_terms 获取按菜单顺序排序并排除特定分类的术语
$categories = wp_get_post_terms( $post_id, 'category', array(
'orderby' => 'term_order', // 按菜单顺序排序
'exclude' => array(14) // 排除ID为14的分类
));
// 检查结果是否为空或是否存在错误
if ( ! empty( $categories ) && ! is_wp_error( $categories ) ) {
echo '<h4>文章分类:</h4>';
echo '<ul class="post-categories-menu-ordered">';
foreach ( $categories as $category ) {
// 生成分类链接并安全输出名称
echo '<li><a href="' . esc_url( get_term_link( $category->term_id, 'category' ) ) . '">' . esc_html( $category->name ) . '</a></li>';
}
echo '</ul>';
} else {
echo '<p>当前文章没有符合条件的分类。</p>';
}
endif; // 结束文章循环
?>通过本文的介绍,我们了解到get_the_category()在处理分类排序方面的局限性,并掌握了使用wp_get_post_terms()函数及其orderby和exclude参数来精确控制WordPress文章分类显示的方法。利用'orderby' => 'term_order',开发者能够轻松实现按后台菜单顺序排列分类的需求,同时通过'exclude'参数灵活排除不需要的分类。这种方法不仅提升了分类显示的灵活性,也使得网站内容的组织和呈现更加符合设计预期。
以上就是WordPress中按菜单顺序显示文章分类的技巧的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号