Вступайте в группу Вконтакте, чтобы быть в курсе предстоящих путешествий: https://vk.com/club96800544

С Joomla на WordPress

Наконец-то закончил переезд одного из поддерживаемых мной сайтов с Joomla на WordPress. Одна из причин перехода – это то, что Joomla 1.0 сильно устарела и сайт периодически взламывали, и хотя проблема решалась в течении полудня, это был неприятный момент. Вторая причина – то что Joomla 1.0 практически никак не интегрируешь с соц. сетями. А это значит меньшое количество посетителей, чем могло бы быть. Было ещё несколько менее важных причин, но первые две – основные.

Изначально хотел перейти с Joomla 1.0 на Joomla 1.5. И на тестовом сайте это неплохо получилось, но тут оказалось, что Joomla 1.5 тоже устарела и надо на Joomla 1.7 переходить. Эта система обновлений мне очень не нравится, ведь каждый переход на новую версию движка требует больших затрат времени и сил. В отличии от Joomla, система обновлений WordPress более простая и постепенная, от версии к версии происходит обновление движка и плагинов по нажатию одной кнопки. Поэтому, несмотря на ряд преимуществ Joomla, в последнее время я делаю новые сайты на WordPress. И когда передо мной встал выбор проводить каждый раз обновление движка за несколько бессонных ночей, либо нажатием на одну кнопку, я для себя выбрал последний вариант.

Так же, как и при переходе с Joomla 1.0 на Joomla 1.5, так и с Joomla на WordPress, в любом случае, надо восстанавливать исходные ссылки, и есть потеря комментариев (эту проблему я решил, об этом ниже), форума, пользователей, и необходимо делать новый шаблон.

Первым делом я создал тестовый поддомен, куда установил новую версию WordPress и почистил её от всех записей, страниц и т.п. После этого добавил плагин Joomla/Mambo To WordPress Migrator. До него пробовал несколько других, но этот в разы упрощает переезд на Вордпресс. Он в первую очередь ориентирован на переход с Joomla 1.5 на WordPress. Но и с Joomla 1.0 справился неплохо, на мой взгляд.

У плагина очень гибкие настройки для разных ситуаций, у меня все просто – один сервер, две базы данных, два сайта. Поэтому я только внес информацию о старом сайте: адрес сайта, название базы данных, имя и пароль администратора, по новому сайту те же данные плюс ещё надо указать, где теперь будут храниться картинки.

Ещё есть настройка изменения ссылок, но с ней я рисковать не стал, потому что инструкцию к ней не нашел. Предполагаю, что она просто делает редирект со старых ссылок на новые.

Плагин перенес все материалы, разделы, категории, пользователей. С записями получилось все просто отлично, но название рубрик исчезло, т.е. была видна только рубрика и количество записей в ней. Это исправил руками, ориентируясь по старому сайту. Переименовывал около 30-40 рубрик по содержавшимся в них записям.

Вторая проблема – имена пользователей, которые были на русском языке, стали отображаться набором символов. Эту проблему решил удалением всех пользователей. Так как смысла в их переносе особо не видел. При переезде на новом движке пользователю в любом случае надо было восстанавливать пароль, а кроме реальных пользователей было ещё достаточно зарегистрированных ботов. Поэтому я провел радикальную чистку, кому интересно, зарегистрируются снова, да и процесс этот на WordPress очень упрощен, ещё можно поставить плагин интеграции пользователей соц сетей. Как следствие, они смогут заходить на сайт под своими аккаунтами из соц сетей, без необходимости новой регистрации.

Следующее, что я сделал – это изменил ссылки записей на старые. Это пришлось делать вручную. При большом количестве материала это превращается в нудную задачу. В Joomla 1.0 ссылки были вида: http://старыйсайт.ru/content/view/номер записи/(номер, где показывается запись). Чтобы сделать нечто похожее, изменил в WordPress шаблон ссылки на произвольный: /content/view/. После этого стоит ярлык записи, вот его-то и надо было поменять в каждой записи в WordPress. Я делал так – открывал в старом сайте список материалов каждой из категорий и смотрел соответствие названия статьи и её ID. Потом шел на новый сайт и изменял ярлык записи на ID со старого сайта. После окончания работы ссылки стали такого вида, http://новыйсайт.ru/content/view/ярлык записи, что практически совпадало со ссылками на Joomla. Думаю, при хорошем знании MySql, это все можно было сделать в автоматическом режиме.

С ссылками на рубрики тоже самое не получилось, так как в Joomla они более сложные, поэтому на них я поставил 301 редирект в файле .htaccess. Ещё редирект я настроил на разные отдельные страницы, например, Контакты.

После этого, сделав похожий шаблон, я перенес старый сайт на дополнительный поддомен, а новый сайт на место старого. Проверил, все прекрасно открывается, текст и картинки отображаются. Установил необходимые плагины на WordPress.

Остался самый сложный момент – перенести комментарии с Joomla на WordPress. Я встречал несколько конвертеров с популярных плагинов Joomla в комментарии WordPress. Но у меня был установлен компонент AkoComment, а для него такой конвертер я не смог найти. Поэтому пришлось вспоминать и снова изучать MySql, тут помог phpMyAdmin. Вся информация о комментариях AkoComment хранится в таблице jos_akocomment, комментарии WordPress хранятся в wp_comments. В целом их структура похожа. Данные-то используются одни и те же – текст комментария, информация об авторе, дата. Для экспериментов я создал тестовую базу и перенес туда обе таблицы. И начал их приводить к  единому виду. Во-первых, изменил кодировку старых комментариев была CP1251 стала UTF8. Второе, поменял названия полей в jos_akocomment на аналогичные в wp_comments, а лишние поля в первой таблице удалил. В результате получилось 9 полей в jos_akocomment, которые я попробовал импортировать в wp_comments. Это у меня не получилось, так как вышла ошибка, которая, как я поня,л о том, что структура таблиц разная. Поэтому я создал в jos_akocomment не достающие столбцы из wp_comments. После этого к моей радости импорт прошел без проблем. Тут я решил то же самое проделать с работающим сайтом, но там уже оказались комментарии новых пользователей и, как следствие, номера этих комментариев совпадали со старыми. Я изменил ID новых комментариев на следующие после старых комментов. После этого сделал импорт старых комментариев. Но опять оказалось не все так просто. В jos_akocomment порядок полей отличался от wp_comments. И в итоге текст комментария был вместо имени автора, дата комментария вместо текста и т.п.

Долго искал, как поменять местами поля в старой таблице, в итоге все сделал.

Снова импорт уже исправленного варианта, комментарии отображаются идеально, все сохранилось и все на месте – и имя автора, и дата, и текст. Но заметил, что комментарии не соответствовали тем записям, к которым писались. Нашел ошибку – в wp_comments привязка комментария идет не по ярлыку, а по ID записи. Их соответствие можно посмотреть в wp_posts поля: ID и post_name. Я попробовал найти команду, которая бы автоматом заменила все ярлыки на ID  в jos_akocomment, но так и не смог. Поэтому на одной вкладке браузера я вывел соответствие между ID и post_name, а на другой открыл все записи jos_akocomment. И исправлял вручную, заняло около получаса.

В итоге, теперь завершен переход с Joomla на WordPress. Все ссылки, записи и комментарии сохранены, а также добавлена функциональность нового движка.

  1. Почитал… ты похоже самый сложный способ выбрал – делать все ручками. Многие вещи элементарно автоматизируются. С комментами конечно та еще возня, как мне кажется – лучше их делать на стороннем сервере типа Disqus (и кстати через него же импорт-экспорт сделать можно).

    1. Автоматизировать надо изменение новых ссылок на старые и перенос комментов. Но для это у меня не хватает знаний MySQL. Разве что-то ещё можно сделать?

      Насчет Disqus, почитал интересная система, но пока нет желания на неё переходить.
      А для переноса он не годился, потому что нет поддержки Joomla 1.0, только 1.5, 1.6 и 1.7 🙁

  2. На самом деле joomla 1.7 тоже устарела. Последняя версия 2.5.6. У меня стоит 2.5 stable, и теперь надо туда данные из Вордпресса перетащить, поскольку блог превращается в нечто большее.
    Хотела воспользоваться конвептером, но рассчитан на версию 1.5 и у меня работать не хочет. Говорят, надо копировать базы данных, но как это делать вручную не знаю. :((

    1. А материалов много? Может имеет смысл просто скопировать?

Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован.

*