Как я переехал с WPGlobus на WP Multilang
Мой краткий рецепт, который, кажется, сработал.
UPDATE:
Я поизучал исходники плагина — по идее, в текущем состоянии, он совместим с форматом WPGlobus, так что, возможно, после установки WP Multilang всё будет работать без манипуляций с базой.
Однако, существует открытый PR с оптимизациями парсинга, исключающий совместимые теги из поддержки.
Короче, если плагин без проблем не встал сразу — то можете попробовать мои махинации, если после установки все работает нормально, то думаю можно пока что не заморачиваться.
Зачем вообще мне понадобилось переезжать?
Если кратко – жалко денег и лень делать самому.
Дело в том, что в свое время я сделал плагин, добавляющий возможность разделения статусов публикации для разных языков (в wpglobus это доступно в премиум), но плагин был рассчитан на classic editor.
При этом я очень полюбил Gutenberg, но не настолько, чтобы переделывать свой плагин под него.
Именно поэтому, freeocart я долгое время не обновлял до пятой ветки и почти все посты делал через classic editor.
Если вам не нужны раздельные статусы, или вам не жалко заплатить 100$/год за WPGlobus Premium, то возможно вам этот рецепт не понадобится, поскольку сам по себе WPGlobus с гутенбергом сейчас нормально дружит.
Недавно на просторах сети наткнулся на крайне интересный плагин WP Multilang, в котором нужные фичи уже встроены и он прекрасно работает с Gutenberg, поэтому мне показалось проще всего отредактировать базу данных под его формат (а вообще, можете посмотреть более детальный обзор с хаками здесь — https://ikfi.ru/article/dobavlyaem-multiyazychnost-v-wordpress-3-wp-multilang).
Ок, я хочу слезть с иглы WPGlobus
Первое, что нужно сделать – разумеется, сделать бэкап на крайний случай.
Делаем дамп базы данных, например утилитой mysql_dump:
mysqldump -udb_user -p mydb > mydb.sql
Далее работаем с дампом базы данных через редактор vim:
vi mydb.sql
… в редакторе переходим в командный режим (вводим двоеточие) и пишем шаблон замены …
%s/{(:\w\{2})}/[\1]/g
Это регулярное выражение заменит все теги WPGlobus вида {:EN}/{:RU}/etc на совместимые с WPMultilang – [:EN]/[:RU]/etc.
Теперь сконвертируем все закрывающие теги:
%s/{\:}/[:]/g
Теперь нужно убрать промежуточные теги глобуса – плагин использует формат:
{:ru}…{:}{:en}…{:}, тогда как в мультилэнге [:ru]…[:en]…[:], для этого выполняем такую замену:
%s/\[:\]\(\[:\w\{2}\]\)/\1/g
Как только все команды выполнены, я рекомендую дополнительно визуально проверить, чтобы не было ошибок.
Теперь нужно сохранить полученный файл, для этого снова переходим в командный режим, нажатием двоеточия, пишем «x», либо «wq» (без кавычек), жмем Return.
Поздравляю, вы сохранили файл и вышли из редактора vi! ?
Теперь нужно залить исправленный дамп обратно в mysql:
cat mydb.sql | mysql -udb_user -p mydb
База подготовлена!
Теперь нужно активировать плагин WP Multilang, деактивировать WPGlobus и можно работать!