Divi Builder自定义模块

Hos*_*ein 5 php wordpress

我为Divi builder开发了一个自定义的简单模块.它在后端和前端编辑器中正确显示.

问题是它根本不会在后端或前端编辑器中保存.当我将它放入后端编辑器并保存帖子时,它会在重新加载后端编辑器后丢失!

这是我的模块类:

class My_Custom_Module extends ET_Builder_Module
{
    public function init()
    {
        $this->name = __('My Custom Module', 'wpl');
        $this->slug = 'CUSTOM_SLUG';
    }
}

new My_Custom_Module();
Run Code Online (Sandbox Code Playgroud)

我按照这篇文章https://jonathanbossenger.com/building-your-own-divi-builder-modules/以及如何创建自定义Divi模块?以及我在谷歌发现的其他一些文章.

我已经尝试在get_fields函数中放置一些字段,但它也没有帮助.

另外为了确保,这不是冲突,我禁用了所有其他插件,但它没有修复,因此它与冲突无关.

Hos*_*ein 6

我终于自己找到了这个问题,如果他们面临同样的问题,我会在这里分享它来帮助别人.

问题中的简单模块不会保存,因为它的slug缺少et_pb_前缀.当我换$this->slug = 'custom_module'到时,它工作正常$this->slug = 'et_pb_custom_module'.

我没有在他们的文档中看到这条规则,但我希望他们在某处提到它.

这是一个简单的Divi自定义模块的工作代码:

function custom_divi_register_modules()
{
    if(class_exists('ET_Builder_Module'))
    {
        class custom_divi_module extends ET_Builder_Module
        {
            public function init()
            {
                $this->name = __( 'Custom Module', 'et_builder' );
                $this->slug = 'et_pb_custom_module';
                $this->fb_support = true;
            }
        }

        new custom_divi_module;
    }
}
add_action('et_builder_ready', 'custom_divi_register_modules');
Run Code Online (Sandbox Code Playgroud)