Недавно разработчики WordPress провели опрос своих пользователей и опубликовали в общий доступ их ответы.
Выяснился интересный факт того что, несмотря на агрессивную рекламу и продвижение нового редактора Gutenberg, популярность его среди пользователей не особо растет. А большинство пользователей предпочитает старый редактор. И это учитывая то, что старый редактор даже удалили из новых версий WordPress. И чтобы начать им пользоваться нужно сейчас скачать и установить на сайт дополнительный плагин.
Скачать и установить классический редактор для WordPress можно следуя следующим инструкциям.
Лично я сколько не пытался перейти на этот блоковый редактор так и не получилось. Не потому что мне не нравится он или не удобно, а просто было не возможно им пользоваться от слова совсем. У меня постоянно были какие-то проблемы и глюки с ним.
Казалось бы удобная штука и все её хвалят, но нигде она толком не работает.
Не работает Gutenberg
Проблемы с этим редактором вылазит у многих. Тексты просто разъезжаются в нём. Разметка съезжает. Весь текст с картинками коверкается. И это даже при минимальном использовании его возможностей.
Я все думал что проблемы в каком то расширении или плагине, но проблемы с разметкой вылазили на разных сайтах, с разным набором плагинов.
В итоге пользоваться им было не возможно. Особенно без знаний html. Лично мне приходилось каждый раз лезти в html код статьи и там вручную править теги, но зачем мне такие страдания? Может проще писать в блокноте сразу на html или пользоваться старым редактором?
При попытке найти в чем проблема, всё время вылазят какие-то ошибки. К тому же они постоянно разные и не понятно что сломалась.
Fatal error: Uncaught Error: Argument 2 passed to QM_Collector_Block_Editor::filter_pre_render_block() must be of the type array, null given, called in /var/www/u0824728/site.com/wp-includes/class-wp-hook.php on line 287 in /var/www/u0824728/pobilat.com/wp-content/plugins/query-monitor/collectors/block_editor.php on line 32 Стек вызовов: QM_Collector_Block_Editor::filter_pre_render_block() wp-includes/class-wp-hook.php:287 WP_Hook::apply_filters() wp-includes/plugin.php:206 apply_filters() wp-includes/blocks.php:455 render_block() wp-includes/blocks.php:478 render_block() wp-includes/blocks.php:403 excerpt_remove_blocks() wp-includes/formatting.php:3820 wp_trim_excerpt() wp-includes/class-wp-hook.php:287 WP_Hook::apply_filters() wp-includes/plugin.php:206
Итого я просто забил на этот Gutenberg, отключил его и поставил обратно старый классический редактор на всех своих сайтах. Его сейчас нужно ставить отдельно как плагин в WordPress.
Почему не работает Gutenberg?
При выходе каждой новой версии WordPress, я её ставил. И ждал что исправят глюки с этим новым редактором. Я пробовал опять начать его использовать. Долго мучался и ругался, а потом опять откатывался на классический редактор.
А тут недавно полез настроивать ещё один новый сервак специально под WordPress и там каким то чудом заработал нормально Gutenberg, после некторых экспериментов выяснилось что в других местах он глючил и плохо работал из-за вот такой настройки в php:
mbstring.func_overload=2
Оказалась, как всегда всё просто и банально. Для нормальной работы Gutenberg нужно обязательно выставлять эту переменную в такое положение:
mbstring.func_overload=0
Если кто не вкурсе эта переменная отвечает за кодировки на сайте, вернее она сообщает о том что используется многобайтовая кодировка. Эта функция активно использовалась до недавнего времени в Bitrix. Поэтому на многих серверах, где есть битрикс сайты, была включена по умолчанию. Кстати в новых версиях Bitrix от неё наконец отказались. И вообще сейчас эта переменныя, начиная с php 7.2 объявлена устаревшей. Соответственно везде нужно выставлять её в 0. Либо вообще не использовать.
Внимание: Данная функциональность объявлена УСТАРЕВШЕЙ, начиная с PHP 7.2.0 и её крайне не рекомендуется использовать.
Собственно даже сайт php.net нам говорит об этом же, но кто читает эти инструкции?
Итог
Чтобы работал нормально новый редактор блоков нужно обязательно на сервере выставить переменную mbstring.func_overload=0. Или вообще её удалить. Самое забавное, что на весь остальной функционал сайта эта переменная никак не влияет или я этого не заметил.
Гутенберг – это страшная боль и невыносимые страдания. Я даже представить не могу, что творилось в головах у разработчиков этого мрака. То не копируется текст, то не действует отмена последнего действия. В общем, нихрена не работает!