Как перенести одиночный сайт в сеть WordPress Multisite, сохранив домен

In Блог by Денис Болвинов

Автор: Денис Болвинов

Необходимость объединения нескольких сайтов в одну мультисайтовую инсталляцию возникла в связи с желанием сэкономить время на обновлении тем, плагинов и слежении за работоспособностью нескольких сайтов. Кроме того, такой способ организации работы даёт возможность в один клик создавать новый сайт с набором предустановленных тем и плагинов на любом поддомене из всех установленных в вашей сети доменов.

Сразу поясню: я использовать Вордпресс мультисайт на поддоменах, а не в папках. То есть, основной сайт у меня vseedino.ru, а сайт на поддомене, например, notes.vseedino.ru.

И второе — эта инструкция только для тех, кто переносит сайт в сеть, не меняя его домен!

Как выяснилось в процессе, вы можете легко привязать нужный вам домен к любому сайту внутри сети. Например, мой сайт bolvinov.ru также находится внутри мультисайтовой сети vseedino.ru.

До того, как эта идея соединения сайтов в сеть меня посетила, я пробовал пользоваться сервисом WP Remote, в админку которого можно бесплатно внести свои сайты и следить там за их обновлением. Но такое удалённое обновление часто вызывало глюки, сайт мог даже упасть, поэтому процесс обновления всегда сопровождался проверкой каждого сайта, которая отнимала кучу времени.

О том, как включить в своём WordPress режим Multisite я писать не буду, для этого в интернете полно инструкций. Перейду сразу к делу.

Что нам нужно для начала

  1. Подходящий хостинг — быстрый и вместительный. Я сейчас использую и рекомендую Lite-host
  2. Полностью функциональная инсталляция WordPress Multisite
  3. CPanel на хостинге. Почему именно CPanel? Попытки провернуть привязку стороннего домена в Direct Admin у меня потерпели неудачу, т.к. там нельзя указать для домена произвольную папку. А в CPanel — можно. Как дела с этой опцией других панелях управления — не знаю!
  4. Усидчивость и внимательность.

0 начало

Начало одно для обоих способов — это тотальный Бэкап всего! Делаем бэкап базы и файлов сети, а также базы и файлов переносимого одиночного сайта.

1 способ: Export / Import плагином за 6 шагов

Подходит только для небольших сайтов. Большие сайты либо вообще не импортируются, либо делают это очень криво.

  1. В стандартную комплектацию WordPress входит плагин экспорта: Инструменты — Экспорт. Заходим туда и экспортируем «Всё» из своего одинокого сайта в xml-файл
  2. Создаём в сети сайтов новый сайт
  3. Нажимаем «Изменить» в списке созданных сайтов, попадая при этом в настройки сайта внутри сети. Меняем поддомен (например, domen.site.ru) на нужный нам домен (domen.ru)
  4. Переходим в CPanel. Переходим в «Дополнительные домены» и там у нужного вам домена одиночного сайта (а он там должен уже быть, если нет, то добавьте) меняем папку на корневую папку вашей сети (к примеру, pulbic_html/site.ru).
  5. Переходим в админку сайта в сети, Инструменты — Импорт. Импортируем выгруженный в п.1 xml-файл.
  6. Ура! Проверяем, всё ли получилось!

2 способ: 9 «простых» шагов переноса сайта в WordPress multisite без плагина

Этот способ подходит для больших сайтов и для тех сайтов, информацию из которых трудно экспортировать. Ведь в каких-то плагинах и шаблонах эта возможность есть, в каких-то нет.

  1. Создаём новый сайт в сети (также, установим в сети все нужные темы и плагины, которые стоят у вас на одиночном сайте, во избежание глюков). Заходим в список ваших сайтов, наводим мышь на созданный сайт и смотрим в ссылке его уникальный ID в нашей сети.
  2. Заходим в myPhpAdmin (например, через CPanel), выбираем базу данных нашего одиночного сайта. Теперь поставим галочки на нужных нам таблицах базы данных сайта. А нужны нам все таблицы, кроме wp_users и wp_usermeta. Также, скорее всего, не нужны таблицы когда-то установленных и удалённых плагинов. Теперь выбираем действие с этими выделенными таблицами «Экспорт», после чего скачивается sql файл.
  3. Открываем sql-файл в Notepad++ (обычный блокнот я не пробовал, там может быть проблема с кодировкой) и автозаменой заменяем:

а) `wp_ на `wp_XX_   — это префиксы таблиц. Возможно у вас был какой-то иной префикс, не wp_, тогда меняем его. Обратите внимание на апостроф «`» перед wp — нужно делать именно такую автозамену или ничего не выйдет. «XX» нужно заменить на ID сайта в сети, который мы выяснили в п.1

б) wp-content/uploads на wp-content/uploads/sites/XX  — XX — соответственно, это ID сайта в сети. На этом шаге нам открывается одна из проблем переноса — папка uploads на одиночном и сетевом сайте выглядит по-разному. Поэтому все картиночные файлы, на которые шли ссылки из поисковиков или других сайтов с момента переноса уже будут недоступны по старому адресу, даже если домен останется тот же.

в) находим строку «wp_user_roles» и меняем её на «wp_XX_user_roles»

Сохраняем sql — файл.

  1. Теперь идём в myPhpAdmin нашей сети, ищем там базу сети, ищем в базе все таблицы с префиксом wp_XX_ (автоматически созданные для нового сайта ), отмечаем их галочкой (можно выделить верхнюю, зажать Shift, выделить нижнюю). Удаляем все эти таблицы.
  2. Идём во вкладку «Импорт» и импортируем в базу изменённый нами в п.3 sql-файл. Таблички занимают своё место в базе сети.
  3. Теперь скопируем в папку сети «wp-content/uploads/sites/XX» все файлы из папки «wp-content/uploads»одиночного сайта. XX, повторюсь, это ID нужного сайта в сети.
  4. Переходим в админку нашей сети, в управление сайтами. На нужном сайте нажимаем «Изменить» и в настройках меняем поддомен (например, domen.site.ru) на нужный нам домен (domen.ru).
  5. Переходим в CPanel. Переходим в «Дополнительные домены» и там у нужного вам домена одиночного сайта (а он там должен уже быть, если нет, то добавьте) меняем папку на корневую папку вашей сети (к примеру, pulbic_html/site.ru).
  6. Всё, сайт перенесён! Теперь, активируем на сайте нужную тему и настроим все плагины, т.к. не всегда это происходит автоматически.

Если вдруг не видны картинки, посмотрите в админке в Медиафайлах их URL. Иногда бывает надо зайти в настройки сети -> настройки сайта -> вкладка «Настройки» . И там поискать путь для uploads. В поле пути не должно быть ничего, если там что-то написано, оно будет добавляться к уже существующему у нас пути «wp-content/uploads/sites/XX».

Ура! Теперь всё должно работать! Но если не работает, не расстраивайтесь, возможно, что это ещё не злой рок, а вы попросту что-то упустили в этих 9 «простых» шагах 🙂