【问题标题】:Divi Builder Custom ModuleDivi Builder 自定义模块
【发布时间】:2017-10-05 10:46:57
【问题描述】:

我为 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();

我关注了这篇文章 https://jonathanbossenger.com/building-your-own-divi-builder-modules/How to create custom Divi module? 以及我在 Google 上找到的其他一些文章。

我已经尝试在 get_fields 函数中添加一些字段,但也没有用。

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

【问题讨论】:

  • 教程下面有一条评论更新,你检查了吗:更新:在准备这篇文章的过程中,我发现我的自定义模块并不总是加载到页面构建器中。在我发现 Divi Page Builder 缓存如何工作之前,我无法弄清楚为什么。所以一定要检查一下。
  • 是的,我查过了。
  • 我自己找到了解决方案。请检查我自己的答案。

标签: php wordpress


【解决方案1】:

我自己终于找到了问题,我在这里分享它以帮助其他人,如果他们遇到同样的问题。

问题中的简单模块没有保存,因为它的 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');

【讨论】:

  • 已确认...自定义模块的 slug 需要在 slug 中添加 et_pb_ 前缀,以便 Divi 保存模块。不确定为什么或如何准确地工作,但如果您正在构建自定义 Divi 模块,这是重要的信息。
  • 我按照在线教程创建了一个自定义模块,但收到了一个致命错误,指出“ET_Builder_Module_Type_PostBased”类不存在。将自定义模块类封装在一个函数中并通过钩子调用:add_action('et_builder_ready', 'custom_divi_register_modules'); 解决了我遇到的问题
  • @Hossein 你能在上面的工作示例中发布更多代码吗? sn-p 确实注册了模块并显示在构建器中,但我正在寻找一个简单的示例来说明如何在构建器中设置字段值并将其显示在页面中。
【解决方案2】:

那不应该发生。 wordpress 中的其他插件可能会导致冲突。我要做的是重新安装 wordpress,应用 Divi 主题,尝试保存模块。如果确实保存。然后,您可以通过将插件一一重新安装来隔离问题并了解导致问题的插件。

【讨论】:

  • 感谢您的赏金!
  • 您好 Rodney,欢迎您,尽管您的回答没有解决问题。我自己发现了问题。你可以检查我自己的答案。
猜你喜欢
  • 1970-01-01
  • 2017-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-14
  • 1970-01-01
  • 2016-07-10
相关资源
最近更新 更多