Elementor分类归档模板Loop Grid部件双分类筛选问题排查
代码错误分析与修正方案
你的代码存在多处语法错误和逻辑问题,导致无法生效,具体问题和修正如下:
主要错误点
- 参数缺失
$符号:匿名函数的参数query未加$,PHP中变量必须以$开头,应改为$query - if语句语法错误:
if ( is_category() )后未加花括号{},导致后续代码不受条件判断约束,逻辑混乱 - 分类ID获取错误:直接写
special-one无法获取分类ID,需通过get_category_by_slug()函数根据slug获取对应分类ID,同时要处理分类不存在的情况 - 变量名拼写错误:
$categorie query是笔误,应为$query - 变量引用错误:
terms数组里的category_id和special_category_id未加$,无法正确引用变量 - 括号不匹配:原代码的函数闭合括号和条件判断括号存在缺失,导致语法报错
修正后的代码
add_action( 'elementor/query/special_archive_filter', function( $query ) { // 仅在分类归档页生效 if ( is_category() ) { $category_id = get_queried_object_id(); // 根据slug获取指定分类ID $special_category = get_category_by_slug( 'special-one' ); if ( $special_category ) { $special_category_id = $special_category->term_id; $query->set( 'tax_query', array( array( 'taxonomy' => 'category', 'field' => 'id', 'terms' => array( $category_id, $special_category_id ), 'operator' => 'AND', ), ) ); } } } );
Elementor端设置步骤
- 打开你的分类归档模板,找到目标Loop Grid部件
- 进入该部件的高级设置面板
- 在查询ID输入框中填写
special_archive_filter(与代码中钩子的后缀一致) - 保存模板并刷新前端页面,此时该Loop Grid只会展示同时属于当前归档分类和
special-one分类的文章
内容的提问来源于stack exchange,提问作者Robert080
相关产品推荐
相关产品推荐

