Dokumentacja MevvBridge

Wyłączenie kreatora Elementor bez psucia witryny.

Wtyczka MevvBridge to most zgodności, a nie konwerter. Odtwarza to, co rozpozna, z własnych danych kreatora Elementor, a całą resztę przechwytuje dokładnie w takiej postaci, w jakiej wygląda, dopóki Elementor jest jeszcze zainstalowany. Ta strona opisuje oba kroki, to, co pozostaje edytowalne, to, co zamarza, jak się wycofać, oraz rzeczy, których wtyczka celowo nie robi.

Instalacja

Wtyczka MevvBridge wymaga WordPress 6.0 lub nowszego oraz PHP 8.1 lub nowszego. Jest całkowicie darmowa i nie ma edycji Pro — żadna funkcja nie jest zablokowana.

Instalacja musi nastąpić, gdy Elementor jest jeszcze aktywny. Zamrożony tor przechwytywany jest z renderowania samego kreatora Elementor; uruchomienie przejęcia przy wyłączonym kreatorze daje pusty wynik.

  1. Wgraj i włącz wtyczkę. Nie usuwaj jeszcze kreatora Elementor.
  2. Otwórz pozycję MevvBridge w lewym menu administracyjnym i przeczytaj raport.
  3. Należy nacisnąć Przejmij. Nic nie zostaje usunięte i żadna strona nie jest edytowana — zapisywany jest wyłącznie wygląd zamrożonych elementów.
  4. Wyłącz kreator Elementor i przejrzyj swoje strony.
  5. Jeżeli wszystko jest na miejscu, kreator Elementor można odinstalować.
  6. Opcjonalnie można nacisnąć Przekonwertuj na bloki. Po tym kroku treść jest natywnym WordPressem, a sam MevvBridge również można usunąć.

Jeżeli po kroku 4 coś wygląda źle, wystarczy ponownie włączyć kreator Elementor: wtyczka MevvBridge sama usunie się na bok.

Jak to działa

Wtyczka MevvBridge czyta pole meta wpisu _elementor_data — oryginalne dane, których nigdy nie usuwa — i rozdziela każdy element na jeden z dwóch torów.

Tor żywy
Rozpoznane elementy są odtwarzane z danych witryny przy każdym żądaniu — zarówno znacznik, jak i CSS. Pozostają edytowalne i pozostają responsywne.
Tor zamrożony
Cała reszta jest przechwytywana raz, dopóki Elementor jest jeszcze zainstalowany: wyrenderowany kod HTML elementu oraz wyłącznie te reguły CSS, które go dotyczą. Zostaje wypisana z powrotem dokładnie tak, jak wyglądała — nie da się jej edytować, ale też nic się nie psuje.

Zasadą jest biała lista, a nie czarna. Błędne „to rozpoznaję” psuje stronę; błędne „tego nie rozpoznaję” kosztuje tylko utratę edytowalności. Widżety innych firm celowo znajdują się poza białą listą, ponieważ ich schematy kontrolek są dla nas zamknięte.

Do czasu konwersji na bloki pole post_content pozostaje zupełnie nietknięte. Wtyczka MevvBridge włącza się w miejscu the_content i wytwarza stronę na żywo. Robi to tylko wtedy, gdy nie jest aktywny żaden źródłowy kreator stron — po ponownej instalacji kreatora Elementor most się wycofuje.

Raport — do przeczytania przed odejściem

Wtyczka MevvBridge ma jeden ekran administracyjny, pod pozycją MevvBridge w lewym menu. Wymaga uprawnienia administratora. Wszystko dzieje się właśnie tam.

Skanowanie szuka opublikowanej treści niosącej dane kreatora Elementor, niezależnie od typu wpisu. To ma znaczenie: nagłówki, stopki i biblioteki szablonów przechowywane są jako własne typy wpisów, a skanowanie ograniczone do stron i wpisów je gubi.

Podsumowanie
Ile stron, ile elementów i ile z nich zostanie zamrożonych.
Tabela
Jeden wiersz na każdą treść: Treść · Typ · Aktywne · Zostanie zamrożone · Co zostanie zamrożone. Ostatnia kolumna wymienia typy widgetów, które zostaną zamrożone, oraz ich liczbę.
Ostrzeżenie o treści dynamicznej
Oznaczone znakiem ⚠. Treść, która zmienia się przy każdym żądaniu — siatka produktów, lista wpisów. Po zamrożeniu zostaje przypięta do tego, co pokazywała w chwili przechwycenia.
Treści, których nie można przekonwertować
Oznaczone znakiem ⛔. Elementy, które po zamrożeniu przestałyby działać — formularze zamówienia, formularze kontaktowe, logowanie, slidery. Strony, które je zawierają, są odrzucane przez konwersję na bloki i zostają przy kreatorze Elementor.

Dwa różne problemy, celowo rozdzielone: dynamiczny znaczy, że treść się dezaktualizuje, niebezpieczny znaczy, że przestaje działać.

Znacznik stanu u góry pokazuje Aktywne, gdy MevvBridge wytwarza strony, oraz Wtyczka źródłowa aktywna, dopóki źródłowy kreator stron jest wciąż włączony.

Krok 1 — Przejmij

Ten krok nie usuwa kreatora Elementor i nie edytuje ani jednej strony. On przechwytuje.

  • Wyrenderowany kod HTML każdego zamrożonego elementu, pobrany z renderowania frontu przez sam kreator Elementor.
  • Wyłącznie te reguły CSS, które dotyczą danego elementu, z usuniętym przedrostkiem zakresu strony, aby reguły działały dalej po przełączeniu.
  • Kod SVG elementów icon i icon-box — te pozostają w torze żywym, ale ich ikona istnieje tylko w wyrenderowanym wyniku. Jeżeli brakuje kodu SVG, nic nie zostaje wypisane; zmyślona ikona byłaby gorsza.
  • Arkusze stylów, które wtyczki źródłowe faktycznie wypisywały na froncie witryny, skopiowane do folderu uploads i ponownie kolejkowane później.
  • Globalne kolory i typografia kreatora Elementor z aktywnego zestawu, wyemitowane ponownie jako te same zmienne CSS, do których strony już się odwołują.
  • Wbudowany CSS, który motyw wypisuje tylko wtedy, gdy Elementor jest aktywny.

Przechwycone elementy przechowywane są we własnej tabeli, a nie w polach meta wpisu, więc nie są wczytywane przy każdym żądaniu.

Cała witryna przechwytywana jest w jednym żądaniu. Na bardzo dużej witrynie można przez to trafić na limit czasu PHP — to znane ograniczenie, a nie ciche niepowodzenie: komunikat z wynikiem podaje, ile elementów przechwycono, i wymienia pierwsze błędy.

Krok 2 — Przekonwertuj na bloki

Opcjonalny i odblokowany dopiero po wykonaniu kroku 1. Zapisuje standardowy znacznik bloków do pola post_content, dzięki czemu treść staje się natywna dla systemu WordPress, a wtyczkę MevvBridge można odinstalować.

  1. Rozpoznane elementy stają się blokami mevvsoft/* — czyli blokami MevvBlocks.
  2. Zamrożone elementy stają się blokiem core/html z wbudowanym w niego CSS, więc przetrwają nawet wtedy, gdy nie będzie już żadnej wtyczki.
  3. Oryginalna zawartość pola post_content trafia do kopii zapasowej w polu meta wpisu _mevvbridge_onceki_icerik, zanim cokolwiek zostanie zapisane.

Konwersja działa na zasadzie wszystko albo nic w obrębie strony. Jeżeli zamrożony element nie ma przechwyconej migawki, strona zostaje pominięta zamiast zapisana w połowie — pół strony jest gorsze niż żadna. Strony niosące element, który przestałby działać, także są pomijane, a komunikat wymienia je z nazwy.

Po tym kroku edycja tych stron wymaga wtyczki MevvBlocks. Ich oglądanie już nie: znacznik jest standardowy, a zamrożone części to bloki HTML z rdzenia.

Dlaczego nie bloki rdzenia? Ponieważ aż do wersji WordPress 7.1 atrybuty bloków rdzenia wciąż nie znają pojęcia breakpointu. Na referencyjnej stronie głównej 23 z 35 żywych elementów niosło wartości dla tabletu lub telefonu; zapisanie ich jako core/group oznaczałoby wyrzucenie albo responsywności, albo wierności co do piksela.

Co pozostaje edytowalne

Te typy elementów kreatora Elementor są odtwarzane z danych witryny i pozostają w torze żywym:

containerheadingtext-editorbuttondividerimagetestimonialiconicon-boxicon-listshortcode

Shortcode’y są uruchamiane na żywo, a nie zamrażane — zamrożenie shortcode’a przypięłoby jego wynik do chwili przechwycenia.

Trzy widżety innych firm mają natywny odpowiednik i zamiast zamrożenia są mapowane:

uael-woo-products
Staje się blokiem produktów, niosąc liczbę pozycji, liczby kolumn dla komputera, tabletu i telefonu, sortowanie oraz filtr kategorii.
uael-woo-categories
Staje się blokiem kategorii produktów, niosąc układ, kolumny, położenie tytułu i regułę filtrowania.
wpforms
Staje się blokiem shortcode zawierającym shortcode wtyczki WPForms. To nie jest nasz silnik formularzy — widżet nie robił nic poza wywołaniem wtyczki WPForms i shortcode robi dokładnie to samo.

Rozpoznany typ, który nie ma odpowiednika w blokach, zostaje zamrożony, a nie naśladowany. Przybliżone mapowanie to ciche psucie.

Co naprawdę oznacza zamrożenie

Zamrożony element wygląda identycznie i nadal działa jako znacznik, ale:

  • nie da się go edytować ani we wtyczce MevvBridge, ani w edytorze blokowym poza surowym kodem HTML;
  • jeżeli pokazywał treść dynamiczną, teraz pokazuje to, co pokazywał w dniu przechwycenia;
  • jeżeli potrzebował języka JavaScript — slider, karuzela, akordeon — zamrożona kopia wypisuje swoją zawartość jedną pod drugą, ponieważ skryptu, który czynił ją interaktywną, już nie ma.

Ten ostatni przypadek jest powodem, dla którego slidery i karuzele znajdują się na liście niebezpiecznych: wtyczka MevvBridge nie konwertuje stron, które je zawierają. Przeniesienie skryptu wtyczki źródłowej zostało odrzucone — zależy on od własnego środowiska wykonawczego kreatora na froncie witryny i od jego konfiguracji dla każdej strony.

Aby odzyskać kontrolę nad zamrożonym elementem, należy albo ponownie zainstalować wtyczkę źródłową, albo usunąć element i zbudować go od nowa z bloku.

Szablony nagłówka i stopki

Migracja, która przenosi wyłącznie treść strony, po cichu gubi stopkę. Wtyczka MevvBridge wypisuje źródłowe szablony nagłówka i stopki na ich miejscu, odczytując je z ustawień wtyczki Header Footer Elementor.

Przepisy dla motywów istnieją dla Astra, GeneratePress i Storefront. Jeżeli dany motyw nie ma przepisu, nic nie zostaje wypisane — doczepienie nagłówka do motywu, którego nie potrafimy podnieść, oznacza gwarantowane dwa nagłówki. Jeżeli wtyczka MevvBlocks ma już pasujący szablon, wtyczka MevvBridge ustępuje jej miejsca.

Oryginalne nazwy klas są odtwarzane, więc CSS odziedziczony po dawnej konfiguracji nadal działa.

Powrót

W żadnym momencie nic nie jest usuwane. Pole _elementor_data zostaje dokładnie tam, gdzie było; wtyczka MevvBridge je czyta i nigdy do niego nie zapisuje.

Przed konwersją na bloki
Wystarczy ponownie włączyć kreator Elementor. Wtyczka MevvBridge wykrywa go i wycofuje się z filtra treści, magazynu stylów, ustawień globalnych oraz przejęcia nagłówka i stopki. Nie ma niczego do cofania.
Po konwersji na bloki
Oryginalna treść znajduje się w polu meta wpisu _mevvbridge_onceki_icerik każdej przekonwertowanej strony. Nie ma na to przycisku; przywraca się ją poleceniem WP-CLI.

Przywracanie ma jedną pułapkę: wp_update_post() oczekuje danych z ukośnikami i sam je usuwa. Zapisanie kopii zapasowej bez wp_slash() sprawia, że sekwencje ucieczki wewnątrz atrybutów bloku tracą ukośnik odwrotny — kod SVG pojawia się na ekranie dosłownie jako 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) ]);
}'

Następnie należy wyczyścić pamięć podręczną stron. W LiteSpeed: wp litespeed-purge all.

Free i Pro

Nie ma tu żadnego podziału do wyjaśniania. Wtyczka MevvBridge jest w całości darmowa, łącznie z krokiem konwersji. Żadna funkcja nie jest bramkowana, nie ma klucza licencyjnego i nie ma edycji Pro.

To świadome stanowisko: ta wtyczka istnieje po to, by wyprowadzić użytkownika z subskrypcji. Pobieranie opłaty za drogę wyjścia byłoby tą samą pułapką w innym kolorze.

Gdy coś nie działa

Raport jest pusty
Żadna opublikowana treść nie niesie danych kreatora Elementor. Strony w wersji roboczej nie są skanowane.
Przejęcie nic nie dało
Kreator Elementor był już wyłączony. Należy go ponownie włączyć, jeszcze raz uruchomić przejęcie, a potem go wyłączyć.
„Przekonwertuj na bloki” jest wyszarzone
Krok 1 nie został jeszcze wykonany. Bramką jest samo wykonanie przejęcia, a nie to, czy cokolwiek zamarzło — witryna z zerową liczbą zamrożonych elementów to przypadek najlepszy i nie powinna być blokowana.
Konwersja pominęła część stron
Albo zamrożony element nie miał migawki, albo strona niesie element, który po zamrożeniu przestałby działać. Komunikat podaje ich liczbę; tabela raportu oznacza je znakiem ⛔.
Typografia lub odstępy przesunęły się po wyłączeniu kreatora Elementor
Należy ponownie uruchomić przejęcie przy włączonym kreatorze Elementor. Przechwytywanie stylów mierzy to, co witryna faktycznie wypisała na froncie, więc musi działać w ramach żądania frontowego, a nie z panelu administracyjnego.
Strona nadal wygląda jak stara wersja
Pamięć podręczna całych stron serwuje nieaktualny kod HTML. Trzeba ją wyczyścić — w LiteSpeed poleceniem wp litespeed-purge all. Dodanie losowego ciągu zapytania do adresu URL pozwala sprawdzić stronę bez bufora.
Pojawiły się dwie stopki
Motyw nie ma przepisu albo aktywny jest także szablon stopki z wtyczki MevvBlocks. Należy sprawdzić, czy stopkę wytwarza tylko jedno z nich.
Przejęcie lub konwersja przekroczyły limit czasu
Oba działania odbywają się w jednym żądaniu. Na dużej witrynie należy podnieść limit czasu PHP dla tego żądania albo uruchomić je na mniej obciążonej maszynie.

Ograniczenia

Poniższa lista to szczerość produktu wobec samego siebie. Nic z tego nie jest błędem.

  • Tylko Elementor. Beaver Builder jest rozpoznawany jako wtyczka źródłowa na potrzeby usunięcia się na bok, ale w tej wersji nie ma czytnika danych Beaver Builder.
  • Widżety innych firm zawsze zamarzają. Odtwarzanie zamkniętego schematu kontrolek zostało zmierzone i nie powiodło się w żadnym z badanych przypadków; zamrożenie to uczciwy wynik.
  • Zamrożonych elementów nie da się edytować i nigdy nie stają się edytowalne same z siebie. Przeniesienie ich do toru żywego to praca na przyszłość.
  • Treść dynamiczna jest przypięta do chwili przechwycenia. Zamrożona siatka produktów nie nadąża za katalogiem.
  • Strony z formularzami, stronami zamówienia, logowaniem, sliderami lub karuzelami nie są konwertowane w ogóle — zostają przy kreatorze Elementor.
  • Przenoszone są wyłącznie szablony nagłówka i stopki. Pojedyncze wpisy, archiwa i wyskakujące okna z kreatora motywów Elementor Pro — już nie.
  • Brak silnika formularzy. Mapowanie WPForms przenosi samo wywołanie; formularz nadal wypisuje wtyczka WPForms.
  • Brak interfejsu edycji. Wtyczka MevvBridge renderuje; edycja przekonwertowanych stron to zadanie wtyczki MevvBlocks.
  • Przejęcie nagłówka i stopki ogranicza się do trzech przepisów motywów oraz do własnych ustawień wtyczki Header Footer Elementor.
  • Przechwycone migawki żyją we własnej tabeli, więc eksport WXR z WordPress ich nie przenosi. Odzyskanie jest i tak bezpieczne: wystarczy ponownie zainstalować wtyczkę źródłową i przechwycić jeszcze raz, ponieważ oryginalne dane nigdy nie zostały usunięte.
  • Obie operacje działają w jednym żądaniu, bez dzielenia na porcje.