使用JetEngine+Elementor创建选项页,控制商品列表网格分类展示
实现方案:为JetEngine Listing Grid绑定后台可配置的商品分类
1. 创建后台全局选项页
用ACF(或JetEngine内置的Meta Box功能)创建一个全局选项页,比如命名为「首页商品Grid配置」:
- 若用ACF:进入ACF设置 → 选项页 → 添加新选项页,设置菜单名称、后台显示位置等参数。
- 若用JetEngine:进入JetEngine → Meta Boxes → 添加新Meta Box,选择「全局」作为存储位置,设置标题为「首页Grid配置」。
2. 添加分类选择字段
在创建好的选项页中,为每个Listing Grid添加独立的商品分类选择字段:
- 字段类型选择「分类」,限定分类组为WooCommerce的「产品分类(product_cat)」。
- 为每个字段设置唯一标识,比如
home_grid_1_cat、home_grid_2_cat,分别对应首页的各个Grid模块。
3. 让JetEngine Query读取动态分类值
JetEngine Query Builder默认不直接支持读取选项页动态值,可通过以下两种方式实现:
方式一:使用JetEngine动态标签(推荐)
在JetEngine的Query设置界面,找到「分类」筛选条件,选择「ID」匹配规则,然后在输入框中插入对应动态标签:
- 若用ACF选项页,输入
{{acf:option:home_grid_1_cat}}(替换为你的字段标识)。 - 若用JetEngine全局Meta Box,输入
{{jet_engine:meta:home_grid_1_cat}}。
注意:需确保字段返回格式设置为「分类ID」,否则需要调整标签获取ID的逻辑(比如
{{acf:option:home_grid_1_cat:ID}})。
方式二:自定义代码拓展Query参数
如果动态标签不生效,可通过jet_engine/query/args钩子修改Query参数:
add_filter( 'jet_engine/query/args', function( $args, $query_id ) { // 替换为你的Listing Query的ID(在JetEngine Query Builder中设置的ID) if ( 'home-grid-1' === $query_id ) { // 从ACF选项页获取分类ID $cat_id = get_field( 'home_grid_1_cat', 'option' ); if ( $cat_id ) { $args['tax_query'] = array( array( 'taxonomy' => 'product_cat', 'field' => 'term_id', 'terms' => $cat_id, ), ); } } // 为其他Grid模块重复上述逻辑 if ( 'home-grid-2' === $query_id ) { $cat_id = get_field( 'home_grid_2_cat', 'option' ); if ( $cat_id ) { $args['tax_query'] = array( array( 'taxonomy' => 'product_cat', 'field' => 'term_id', 'terms' => $cat_id, ), ); } } return $args; }, 10, 2 );
将这段代码添加到主题的functions.php文件或自定义插件中,记得替换query_id和字段标识为你自己的配置。
4. Elementor中绑定Listing Grid
在Elementor编辑器中,找到对应的Listing Grid组件,选择你配置好的带动态分类参数的Query,保存后预览即可。管理员在后台选项页修改分类后,前端Grid会自动更新对应分类的商品。
内容的提问来源于stack exchange,提问作者morgan draker
相关产品推荐
相关产品推荐

