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

如何直接访问Elementor小部件分类列表?插件中Action未触发

直接访问Elementor小部件分类列表的方法

问题原因

你之前使用的elementor/elements/categories_registered钩子仅在Elementor完成部件分类注册时触发,这个时机通常局限于Elementor编辑器的加载流程中。如果你的插件页面不在Elementor的编辑场景内,该钩子不会被触发。

解决方案:直接获取Elementor实例访问分类

可以通过Elementor的单例插件实例,直接调用元素管理器的get_categories()方法,无需依赖特定钩子,只要确保Elementor已加载初始化即可。

方法1:在Elementor初始化后获取(推荐)

使用elementor/init钩子,确保Elementor完成初始化后再获取分类:

add_action('elementor/init', function() {
    // 获取Elementor元素管理器实例
    $elements_manager = \Elementor\Plugin::instance()->elements_manager;
    // 获取完整的小部件分类列表
    $elementor_categories = $elements_manager->get_categories();
    
    // 示例:输出分类数据(可根据需求替换为业务逻辑)
    // print_r($elementor_categories);
});

方法2:在插件页面直接调用

如果需要在自定义插件的特定页面中获取分类,可以封装一个函数,先检查Elementor是否已加载:

function my_plugin_get_elementor_categories() {
    // 先判断Elementor是否已安装并加载
    if (!class_exists('\Elementor\Plugin')) {
        return [];
    }
    
    // 获取元素管理器并返回分类列表
    $elements_manager = \Elementor\Plugin::instance()->elements_manager;
    return $elements_manager->get_categories();
}

// 在你的插件页面中调用该函数
$elementor_categories = my_plugin_get_elementor_categories();

补充说明

  • get_categories()返回的是一个关联数组,键为分类的唯一标识,值包含分类的名称、图标等信息。
  • 确保你的插件在Elementor之后加载,或者在调用前检查Elementor类是否存在,避免出现致命错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 18:06:00