✅ WEB і WordPress новини, теми, плагіни. Тут ми ділимося порадами і кращими рішеннями для сайтів.

Як скасувати підтримку блоків Гутенберга

11

Однією з найпоширеніших проблем із оновленням теми чи плагіна за допомогою блоків Gutenberg є те, що внесення змін до коду блоку порушить усі наявні публікації, які використовують цей блок. На щастя, WordPress пропонує рішення; спосіб відмови від підтримки блоків. У цій публікації ми розглянемо, як це зробити.

Якщо ви раніше працювали з розробкою блоків, то, ймовірно, знайомі з цією помилкою блоку, коли ви додали блок, а потім змінили saveфункцію.

Як скасувати підтримку блоків Гутенберга

Це відбувається тому, що WordPress порівнює збережений блок у базі даних із поточним кодом у saveфункції у вашому блоці, і вони не збігаються. WordPress не в змозі виправити різницю. У більшості випадків ви можете натиснути три крапки на блоці та вибрати «Спроба відновлення блоку». Якщо зміни, внесені до saveфункції, були незначними (наприклад, зміна класу), WordPress може відновити блок. У найгіршому випадку ви d потрібно натиснути «Перетворити на HTML», і ви втратите editфункціональність свого блоку. Очевидно, ми не можемо очікувати, що користувачі нашого коду блоку вручну знайдуть усі дописи за допомогою цього блоку та виконають ці дії для кожного.

Тож перш ніж оновлювати saveфункцію, ми додамо код, який повідомить WordPress, як обробляти старий вміст, який було збережено за допомогою старої saveфункції.

Давайте розберемося з кодом!

Насправді все досить просто. Коротше кажучи, що нам потрібно зробити: додати deprecatedвластивість до registerBlockType()виклику функції. Ця властивість очікує масив. Це означає, що ви можете застаріти блок кілька разів, надаючи кілька записів у масиві. Кожна амортизація визначається як об’єкт, що має повну attributesвластивість і (стару) saveфункцію.

Іншими словами, ви визначаєте deprecatedвластивість як масив, а потім копіюєте в нього свій блок attributesі saveфункцію. Вам потрібно буде включити атрибути, навіть якщо ви нічого не змінюєте в них під час оновлення. Вам не потрібно включати editфункцію в амортизацію.

Розглянемо це на більш практичному прикладі.

Припустімо, що наш блоковий код виглядає приблизно так. Функцію editвиключено, оскільки нам не потрібно мати справу з нею під час амортизації.

Тоді припустімо, що ми хочемо внести зміни в обидва атрибути та зберегти існуючі блоки та уникнути їх пошкодження. Ми додаємо deprecatedвластивість і копіюємо в нього цілий attributesі saveяк елемент масиву. Після цього ми можемо вносити будь-які зміни до attributesта/або saveфункції.

Зібравши цей код, ви можете знайти наявну публікацію, використовуючи старий код блоку, і ви не отримаєте зламаного коду!

WordPress визначить, що блок використовує наш застарілий код, і завантажить вміст за допомогою застарілого saveкоду. Щойно ви внесете зміни в блок і оновите публікацію, блок буде збережено за допомогою нової saveфункції.

Поглиблена амортизація та подальше читання

Наведений вище приклад коду є найосновнішою формою амортизації. WordPress підтримує більше функціональних можливостей, таких як включення migrateта supportsнавіть призначення констант (номерів версії) вашому застарілому коду. Перегляньте документацію WordPress про амортизацію блоку.

Джерело запису: awhitepixel.com

Цей веб -сайт використовує файли cookie, щоб покращити ваш досвід. Ми припустимо, що з цим все гаразд, але ви можете відмовитися, якщо захочете. Прийняти Читати далі