如何直接访问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
相关产品推荐
相关产品推荐

