✅ Новости WEB и WordPress, темы, плагины. Здесь мы делимся советами и лучшими решениями для веб-сайтов.

Как отказаться от блоков Гутенберга

29

Одна из наиболее распространенных проблем с обновлением темы или плагина с помощью блоков Гутенберга заключается в том, что внесение изменений в код блока приведет к поломке всех существующих сообщений, использующих этот блок. К счастью, 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 для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее