Я бы хотел переместить (лучше: скопировать) стандартный модуль Divi, в данном примере текстовый модуль, в дочернюю тему, чтобы мои настройки перенесли обновление. Первый шаг - просто добавить модуль в дочернюю тему и использовать его. Конечно, не должно быть каких-либо изменений в функциональности бэкэнда, фронтэнда или визуального компоновщика. Кстати, я использую Divi 4.4.2 и версию Builder 3.17.3
То, что я до сих пор пробовал: я создал дочернюю тему, создал папку «Divi-Child» и добавил стиль. css (пока пусто) и функции. 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);
Я создал папку для «пользовательских» модулей (custom-modules). Я скопировал содержимое php из исходного модуля Divi (путь в основной теме: /Divi/includes/builder/module/text.php) в папку пользовательских модулей и назвал файл ctm. php (custom текстовый модуль). В этом файле я изменил имя класса с 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). У меня был более длинный чат с поддержкой элегантных тем (дней), но они не смогли дать ответ.