You need to enable JavaScript to run this app. 如何在Elementor自定义小工具中添加全量文章分类多选控制项
优惠活动
大模型
产品
解决方案
定价
更多

如何在Elementor自定义小工具中添加全量文章分类多选控制项

Elementor 全量文章分类多选控件配置方案

现有代码的核心问题

  • 代码中传入options参数的$category是未做任何赋值逻辑的孤立变量,既没有实际拉取站点分类数据的流程,也不符合SELECT2控件要求的「分类ID(键)=> 分类名称(值)」的关联数组格式,完全无法正常渲染分类选项。
  • Elementor的select类控件不支持在options参数内部直接写循环拉取数据的逻辑,必须提前把分类数据组装为指定结构的数组后再传入配置项。

实现流程

  • 调用WordPress原生get_terms()接口拉取站点全量文章分类数据
  • 遍历分类结果,组装为控件兼容的键值对数组,同时做好异常判断避免PHP报错
  • 将组装完成的数组传入options配置项,补充交互类参数优化使用体验

完整可运行的修正代码

// 拉取站点默认文章分类数据,可根据需求调整查询参数
$raw_categories = get_terms( [
    'taxonomy'   => 'category', // 对应WordPress默认文章分类法标识
    'hide_empty' => true, // 设为false即可展示没有关联文章的空分类
    'orderby'    => 'name', // 按分类名称排序展示
] );

// 初始化分类选项数组,默认加上“全部分类”快捷选项
$category_options = [ 'all' => __( '全部分类', 'plugin-domain' ) ];
// 排除分类查询出错的场景,避免触发PHP警告
if ( ! is_wp_error( $raw_categories ) ) {
    foreach ( $raw_categories as $cat_item ) {
        $category_options[ $cat_item->term_id ] = $cat_item->name;
    }
}

// 注册Elementor控制项
$this->add_control(
    'show_elements',
    [
        'label'       => __( '文章分类选择', 'plugin-domain' ),
        'type'        => \Elementor\Controls_Manager::SELECT2,
        'multiple'    => true,
        'options'     => $category_options, // 直接传入提前组装好的分类数组
        'default'     => [], // 多选模式下默认值设为空数组,避免类型不匹配报错
        'placeholder' => __( '请选择需要筛选的文章分类', 'plugin-domain' ),
    ]
);

常见配置注意点

  • 不要直接把get_terms()返回的原生对象数组原封不动传给options参数,结构不匹配会导致控件渲染异常。
  • 如需拉取其他类型的分类数据(比如WooCommerce商品分类、自定义内容类型的关联分类),只需修改get_terms()中taxonomy参数为对应分类法的标识名即可。
  • 多选模式下不要把默认值设为空字符串,会触发Elementor的控件校验警告,统一设为空数组即可。

内容的提问来源于stack exchange,提问作者Akash Pise

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.26 18:15:03