首页 > 解决方案 > 如何将 Divi 模块移动到子主题中以供以后自定义?

问题描述

我想将标准 Divi 模块(在本例中为文本模块)移动(更好:复制)到子主题,以便我的自定义能够在更新后继续存在。第一步是简单地将模块添加到子主题并使用它。当然,后端、前端或可视化构建器中的功能不应该有任何变化。顺便说一句:我正在使用 Divi 4.4.2 和 builder 版本 3.17.3

到目前为止我尝试了什么:我创建了一个子主题,创建了文件夹“Divi-Child”并添加了 style.css(到目前为止为空)和 functions.php:

函数.php:

<?php
function theme_enqueue_styles() {
    wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
}
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );

function divi_child_theme_setup() {
    if ( class_exists('ET_Builder_Module')) {
        get_template_part( '/custom-modules/ctm' );
        $ctm = new WPC_ET_Builder_Module_Text();
        remove_shortcode( 'et_pb_text' );
        add_shortcode( 'et_pb_text', array($ctm, '_shortcode_callback') );
    }
}
add_action('et_builder_modules_loaded', 'divi_child_theme_setup', 9999);

我为“自定义”模块(自定义模块)创建了一个文件夹。我将 Divi 原始模块(主主题中的路径:/Divi/includes/builder/module/text.php)中的 php 内容复制到我的自定义模块文件夹中,并调用了文件 ctm.php(自定义文本模块)。在这个文件中,我将类名从 更改ET_Builder_Module_TextWPC_ET_Builder_Module_Text

我预计,一切都会像以前一样工作。它几乎是这样的:

但是:该模块未在可视化构建器模式下呈现。相反,在出现文本模块的每个位置都会输出以下行:

function(t){
  return r.a.createElement(f.a,E({rawContentProcesser:h.default.replaceCodeContentEntities},e.props))
}

我不知道如何处理这种情况。我的问题是:有没有办法(这种方式在这里或任何其他方式)将 Divi 标准模块复制到一个安全的地方,定制不会被下一次更新覆盖?

如果需要,我可以提供整个 ctm.php(与 Divi Text.php 相同)。我与优雅的主题支持(天)进行了更长的聊天,但他们无法提供答案。

标签: phpwordpress

解决方案


推荐阅读