You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP for循环筛选文章 如何按分类description字段排序WordPress艺术家文章

解决方案

你现在贴的代码是单篇艺术家条目的渲染模板,排序逻辑不在这部分,你需要根据你的项目实现方式,选下面任意一种方案修改:

方案1:前端网格排序(适用用Isotope、Masonry等前端网格库实现排序的场景)

你代码里已经给每个条目绑定了data-order属性存储分类description的值,只需要修改网格初始化的JS配置,指定按data-order升序排序即可:

// 找到你主题里初始化网格的JS代码,修改sortBy相关配置即可
$('.grid').isotope({
  itemSelector: '.grid-item',
  layoutMode: 'masonry',
  sortBy: 'order', // 指定按data-order属性排序
  sortAscending: true // 正序:A→D,设为false就是倒序D→A
});

方案2:后端查询排序(更推荐,SEO友好,兼容性更好)

直接修改WordPress查询艺术家文章的逻辑,返回结果时就按分类description排序,不需要依赖前端JS。把下面代码加到你当前主题的functions.php文件里即可:

add_action('pre_get_posts', 'custom_sort_artists_by_tax_description');
function custom_sort_artists_by_tax_description($query) {
    // 仅对前台艺术家文章存档页的主查询生效,不影响后台和其他页面
    if ( !is_admin() && $query->is_main_query() && is_post_type_archive('artists') ) {
        // 先获取所有filter分类,按description升序排列拿到分类ID数组
        $sorted_filter_terms = get_terms([
            'taxonomy' => 'filter',
            'orderby' => 'description',
            'order' => 'ASC',
            'hide_empty' => true,
            'fields' => 'ids'
        ]);
        // 设置查询规则,按分类的顺序返回文章
        $query->set('tax_query', [
            [
                'taxonomy' => 'filter',
                'field' => 'term_id',
                'terms' => $sorted_filter_terms,
                'operator' => 'IN'
            ]
        ]);
        $query->set('orderby', 'tax__in');
        $query->set('order', 'ASC');
    }
}

如果你的自定义文章类型slug不是artists,或者艺术家列表是自定义页面输出,把上述代码里的is_post_type_archive('artists')替换为对应页面的判断规则即可,比如用is_page('艺术家列表页别名')。

补充说明

你之前修改的$filter_ = $f->{'slug'}相关变量是用来生成网格筛选的CSS类名的,和排序逻辑无关,所以调整后不会生效。

内容的提问来源于stack exchange,提问作者Octavio Kh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 10:06:02