Документация MevvBridge

Отключите Elementor, не сломав сайт.

MevvBridge — это мост совместимости, а не конвертер. Он пересобирает то, что распознаёт, из ваших собственных данных Elementor, а всё остальное снимает ровно в том виде, в каком оно выглядит, пока Elementor ещё установлен. На этой странице — два шага, что остаётся редактируемым, что замораживается, как вернуться назад и чего он намеренно не делает.

Установка

MevvBridge требует WordPress 6.0 или новее и PHP 8.1 или новее. Он полностью бесплатен, редакции Pro нет — ни одна возможность не заблокирована.

Устанавливайте его, пока Elementor ещё активен. Замороженная полоса снимается с собственной отрисовки Elementor; запустите перехват при выключенном Elementor — и получите пустой результат.

  1. Загрузите и активируйте плагин. Elementor пока не удаляйте.
  2. Откройте MevvBridge в левом меню админки и прочитайте отчёт.
  3. Нажмите Перехватить. Ничего не удаляется и ни одна страница не редактируется — фиксируется только внешний вид замороженных элементов.
  4. Отключите Elementor и пройдитесь по своим страницам.
  5. Если всё на месте, Elementor можно удалить.
  6. При желании нажмите Преобразовать в блоки. После этого шага содержимое становится нативным WordPress, и сам MevvBridge тоже можно удалить.

Если после шага 4 что-то выглядит не так, включите Elementor снова: MevvBridge сам отойдёт в сторону.

Как это работает

MevvBridge читает мета-поле записи _elementor_data — ваши исходные данные, которые он никогда не удаляет, — и распределяет каждый элемент по одной из двух полос.

Живая полоса
Распознанные элементы пересобираются из ваших данных при каждом запросе — и разметка, и CSS. Они остаются редактируемыми и остаются адаптивными.
Замороженная полоса
Всё остальное снимается один раз, пока Elementor ещё установлен: отрисованный HTML элемента плюс только те правила CSS, которые к нему обращаются. Он выводится обратно ровно таким, каким был, — не редактируемым, но и не сломанным.

Правило — это белый список, а не чёрный. Ошибочное «я это распознаю» ломает страницу; ошибочное «я это не распознаю» стоит лишь редактируемости. Сторонние виджеты намеренно оставлены вне белого списка, потому что схемы их настроек для нас закрыты.

Пока вы не преобразуете содержимое в блоки, ваш post_content вообще не трогается. MevvBridge подключается на the_content и формирует страницу на лету. Он делает это только пока не активен ни один исходный конструктор страниц — установите Elementor заново, и мост отступает.

Отчёт — прочитайте его до того, как уйти

У MevvBridge один экран в админке — пункт MevvBridge в левом меню. Он требует прав администратора. Всё происходит там.

Сканирование ищет опубликованное содержимое с данными Elementor, независимо от типа записи. Это важно: шапки, подвалы и библиотеки шаблонов хранятся как собственные типы записей, и сканирование, ограниченное страницами и записями, их теряет.

Сводка
Сколько страниц, сколько элементов и сколько из них заморозится.
Таблица
По одной строке на каждый материал: Содержимое · Тип · Активные · Будет заморожено · Что будет заморожено. В последнем столбце перечислены типы виджетов, которые будут заморожены, и сколько их каждого вида.
Предупреждение о динамическом содержимом
Отмечено ⚠. Содержимое, которое меняется при каждом запросе, — сетка товаров, список записей. В замороженном виде оно закрепляется на том, что показывало в момент снятия.
Содержимое, которое нельзя преобразовать
Отмечено ⛔. Элементы, которые перестали бы работать в заморозке, — формы оформления заказа, контактные формы, вход, слайдеры. Страницы с ними преобразование в блоки отклоняет и оставляет на Elementor.

Две разные задачи, намеренно разделённые: динамическое означает, что оно устаревает, опасное — что оно перестаёт работать.

Индикатор состояния вверху показывает Активно, когда MevvBridge выдаёт ваши страницы, и Исходный плагин активен, пока исходный конструктор страниц ещё включён.

Шаг 1 — Перехватить

Этот шаг не удаляет Elementor и не редактирует ни одной страницы. Он снимает.

  • Отрисованный HTML каждого замораживаемого элемента, взятый из собственной фронтенд-отрисовки Elementor.
  • Только те правила CSS, которые обращаются к этому элементу, со снятым префиксом области страницы, чтобы правила продолжали действовать после переключения.
  • SVG элементов icon и icon-box — сами они остаются в живой полосе, но их иконка существует только в отрисованном выводе. Если SVG отсутствует, ничего не выводится; выдуманная иконка была бы хуже.
  • Таблицы стилей, которые исходные плагины действительно выводили на фронтенде, — копируются в вашу папку uploads и подключаются заново.
  • Глобальные цвета и типографика Elementor из активного набора — выдаются заново как те же CSS-переменные, на которые уже ссылаются ваши страницы.
  • Встроенный CSS, который ваша тема выводит только при активном Elementor.

Снятые элементы хранятся в собственной таблице, а не в мета-полях записей, поэтому не загружаются при каждом запросе.

Весь сайт снимается за один запрос. На очень большом сайте это может упереться в лимит времени PHP — это известное ограничение, а не молчаливый сбой: уведомление о результате сообщает, сколько элементов снято, и перечисляет первые ошибки.

Шаг 2 — Преобразовать в блоки

Необязательный шаг, открывается только после выполнения шага 1. Он записывает стандартную блочную разметку в post_content, поэтому содержимое становится родным для WordPress, а MevvBridge можно удалить.

  1. Распознанные элементы становятся блоками mevvsoft/* — блоками MevvBlocks.
  2. Замороженные элементы становятся блоком core/html со встроенным внутрь CSS, поэтому они переживают даже удаление всех плагинов.
  3. Исходный post_content сохраняется в мета-поле записи _mevvbridge_onceki_icerik до того, как что-либо будет записано.

Преобразование работает по принципу «всё или ничего» для каждой страницы. Если у замороженного элемента нет снятого снимка, страница пропускается, а не записывается наполовину — половина страницы хуже, чем ничего. Страницы с элементом, который перестал бы работать, тоже пропускаются, и уведомление их называет.

После этого шага для редактирования таких страниц нужен MevvBlocks. Для просмотра — нет: разметка стандартная, а замороженные части — это блоки HTML из ядра.

Почему не блоки ядра? Потому что вплоть до WordPress 7.1 у атрибутов блоков ядра до сих пор нет понятия брейкпоинта. На эталонной главной странице 23 из 35 живых элементов несли значения для планшета или мобильного; запись их как core/group отбросила бы либо адаптивность, либо точность до пикселя.

Что остаётся редактируемым

Эти типы элементов Elementor пересобираются из ваших данных и остаются в живой полосе:

containerheadingtext-editorbuttondividerimagetestimonialiconicon-boxicon-listshortcode

Шорткоды выполняются вживую, а не замораживаются — заморозка шорткода закрепила бы его вывод на моменте снятия.

У трёх сторонних виджетов есть родной эквивалент, поэтому они сопоставляются, а не замораживаются:

uael-woo-products
Становится блоком товаров и переносит количество элементов, число колонок для десктопа/планшета/мобильного, сортировку и фильтр по категории.
uael-woo-categories
Становится блоком категорий товаров и переносит макет, колонки, положение заголовка и правило фильтра.
wpforms
Становится блоком шорткода, содержащим шорткод WPForms. Это не наш движок форм — виджет только вызывал WPForms, то же делает и шорткод.

Распознанный тип, у которого нет блочного эквивалента, замораживается, а не имитируется. Приблизительное сопоставление — это молчаливая поломка.

Что на самом деле означает заморозка

Замороженный элемент выглядит идентично и продолжает работать как разметка, но:

  • его нельзя редактировать ни в MevvBridge, ни в блочном редакторе иначе как в виде чистого HTML;
  • если он показывал динамическое содержимое, теперь он показывает то, что показывал в день снятия;
  • если ему нужен был JavaScript — слайдер, карусель, аккордеон, — замороженная копия выводит своё содержимое стопкой, потому что скрипта, делавшего его интерактивным, больше нет.

Именно поэтому слайдеры и карусели в списке опасных: MevvBridge не преобразует содержащие их страницы. Переносить скрипт исходного плагина мы отказались — он зависит от собственной фронтенд-среды конструктора и его настроек для каждой страницы.

Чтобы вернуть замороженный элемент под свой контроль, либо установите исходный плагин заново, либо удалите элемент и соберите его заново блоком.

Шаблоны шапки и подвала

Миграция, которая переносит только тело страницы, незаметно теряет подвал. MevvBridge выводит исходные шаблоны шапки и подвала на их местах, читая их из собственных настроек Header Footer Elementor.

Рецепты тем есть для Astra, GeneratePress и Storefront. Если для вашей темы рецепта нет, не выводится вообще ничего — прикрутить шапку к теме, которую мы не умеем снимать, значит гарантированно получить две шапки. Если у MevvBlocks уже есть подходящий шаблон, MevvBridge уступает ему.

Исходные имена классов воспроизводятся, поэтому CSS, унаследованный от прежней настройки, продолжает действовать.

Возврат назад

Ничего не удаляется ни на одном этапе. Ваш _elementor_data остаётся ровно там, где был; MevvBridge читает его и никогда в него не пишет.

До преобразования в блоки
Включите Elementor снова. MevvBridge это обнаруживает и отступает от фильтра содержимого, хранилища стилей, глобальных значений и перехвата шапки и подвала. Отменять нечего.
После преобразования в блоки
Исходное содержимое лежит в мета-поле записи _mevvbridge_onceki_icerik каждой преобразованной страницы. Кнопки для этого нет; восстановите его через WP-CLI.

У восстановления есть одна ловушка: wp_update_post() ожидает данные с экранирующими слешами и сам их снимает. Запишите резервную копию обратно без wp_slash() — и escape-последовательности внутри атрибутов блоков потеряют обратный слеш, а SVG появятся на экране буквально как u003csvg.

wp eval '
foreach ( get_posts(["post_type"=>"any","numberposts"=>-1]) as $p ) {
  $y = get_post_meta( $p->ID, "_mevvbridge_onceki_icerik", true );
  if ( $y ) wp_update_post([ "ID"=>$p->ID, "post_content"=>wp_slash($y) ]);
}'

После этого очистите кеш страниц. В LiteSpeed: wp litespeed-purge all.

Free и Pro

Здесь нечего разделять. MevvBridge полностью бесплатен, включая шаг преобразования. Ни одна возможность не закрыта, лицензионного ключа нет, редакции Pro нет.

Это осознанная позиция: этот плагин существует, чтобы вывести вас из подписки. Брать плату за выход было бы той же ловушкой другого цвета.

Когда что-то не работает

Отчёт пуст
Ни в одном опубликованном материале нет данных Elementor. Черновики не сканируются.
Перехват ничего не дал
Elementor уже был отключён. Включите его снова, запустите перехват заново, затем отключите.
«Преобразовать в блоки» неактивна
Шаг 1 ещё не выполнен. Условие — что перехват был запущен, а не то, заморозилось ли что-нибудь: сайт с нулём замороженных элементов — это лучший случай, и его нельзя запирать.
Часть страниц преобразование пропустило
Либо у замороженного элемента не было снимка, либо на странице есть элемент, который перестал бы работать в заморозке. Уведомление их считает; таблица отчёта помечает их знаком ⛔.
После отключения Elementor сместились типографика или отступы
Запустите перехват ещё раз при активном Elementor. Снятие стилей измеряет то, что ваш сайт действительно выводил на фронтенде, поэтому оно должно выполняться на фронтенд-запросе, а не из админки.
Страница по-прежнему выглядит как старая версия
Полностраничный кеш отдаёт устаревший HTML. Очистите его — в LiteSpeed это wp litespeed-purge all. Добавьте к адресу случайную строку запроса, чтобы посмотреть некешированную страницу.
Появились два подвала
Для вашей темы нет рецепта, или одновременно активен шаблон подвала MevvBlocks. Проверьте, что подвал формирует только один из них.
Перехват или преобразование прервались по таймауту
Оба выполняются за один запрос. На большом сайте увеличьте лимит времени PHP для этого запроса или запустите их на менее нагруженной машине.

Ограничения

Список ниже — это честность продукта о самом себе. Ничто из этого не является ошибкой.

  • Только Elementor. Beaver Builder распознаётся как исходный плагин, чтобы мост мог отойти в сторону, но чтения Beaver в этой версии нет.
  • Сторонние виджеты всегда замораживаются. Воспроизведение закрытой схемы настроек было проверено и провалилось во всех испытанных случаях; заморозка — честный итог.
  • Замороженные элементы не редактируются и сами по себе редактируемыми не становятся. Перевод их в живую полосу — задача на будущее.
  • Динамическое содержимое закреплено на моменте снятия. Замороженная сетка товаров за вашим каталогом не следует.
  • Страницы с формами, оформлением заказа, входом, слайдерами или каруселями не преобразуются вовсе — они остаются на Elementor.
  • Переносятся только шаблоны шапки и подвала. Одиночные записи, архивы и всплывающие окна конструктора тем Elementor Pro — нет.
  • Своего движка форм нет. Сопоставление с WPForms переносит вызов; форму по-прежнему выводит WPForms.
  • Интерфейса редактирования нет. MevvBridge отрисовывает; редактирование преобразованных страниц — задача MevvBlocks.
  • Перехват шапки и подвала ограничен тремя рецептами тем и собственными настройками Header Footer Elementor.
  • Снятые снимки живут в собственной таблице, поэтому экспорт WordPress WXR их не переносит. Восстановление всё равно безопасно: установите исходный плагин заново и снимите ещё раз, ведь ваши исходные данные никогда не удалялись.
  • Обе операции выполняются за один запрос, без разбиения на части.