Как переместить модуль Divi в дочернюю тему для дальнейшей настройки? - PullRequest
0 голосов
/ 09 апреля 2020

Я бы хотел переместить (лучше: скопировать) стандартный модуль 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). У меня был более длинный чат с поддержкой элегантных тем (дней), но они не смогли дать ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...