php - 如何将 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_Text
为WPC_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 相同)。我与优雅的主题支持(天)进行了更长的聊天,但他们无法提供答案。
解决方案
推荐阅读
- python - 如何在 python 中获取数据框内的相关性?
- laravel - Laravel:雄辩的 wherehas 不排除具有特定价值的记录
- php - 资源路由
- spring - Spring 错误创建名为“org.speingframework.aop.config.internalAutoProxyCreator”的bean
- visual-studio-code - “术语 'chrome' 未被识别为 cmdlet 的名称”
- javascript - 为什么 Node.js 中 FS 模块的相对路径和要求指向不同的位置?
- github - 如何通过 Github 发布第二个项目
- html - 如何合并超过浏览器高度的响应式背景图像?
- maps - 当用户尝试根据开放层 6 中的属性进行修改时,如何使特定多边形不被修改?
- xml - XSL 循环相同的节点,每个节点都有嵌套