9 «простых» шагов переноса сайта в WordPress multisite без плагина
Рекомендуемый официально способ с экспортом и импортом записей имеет существенные недостатки.
- при таком методе изменяются id записей и некоторые ссылки перестают работать. А точнее, очень многие.
- потом возникают трудности с настройкой доменов и мультисайтов на новом хостинге. У меня были какие-то глюки, сайт толком не заработал.
- Перенос плагинов - та еще песня при экспорте-импорте. Большинство из них перестают работать правильно, т.к. id записей, страниц, тегов и рубрик на новом сайте другие.
- у меня на одном из хостингов экспорт не работал, поэтому метод отпал сам собой
Поэтому лучше использовать способ с переносом таблиц базы данных. Говорят, что при этом переносятся лишние данные, но лучше лишние, чем "геморрой" с настройкой сайта с нуля. Итак, далее цитата с источника по ссылке.
Этот способ подходит для больших сайтов и для тех сайтов, информацию из которых трудно экспортировать. Ведь в каких-то плагинах и шаблонах эта возможность есть, в каких-то нет.
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 — файл.
4. Теперь идём в myPhpAdmin нашей сети, ищем там базу сети, ищем в базе все таблицы с префиксом wp_XX_ (автоматически созданные для нового сайта ), отмечаем их галочкой (можно выделить верхнюю, зажать Shift, выделить нижнюю). Удаляем все эти таблицы.
5. Идём во вкладку «Импорт» и импортируем в базу изменённый нами в п.3 sql-файл. Таблички занимают своё место в базе сети.
6. Теперь скопируем в папку сети «wp-content/uploads/sites/XX» все файлы из папки «wp-content/uploads»одиночного сайта. XX, повторюсь, это ID нужного сайта в сети.
7. Переходим в админку нашей сети, в управление сайтами. На нужном сайте нажимаем «Изменить» и в настройках меняем поддомен (например, domen.site.ru) на нужный нам домен (domen.ru).
8. Переходим в CPanel. Переходим в «Дополнительные домены» и там у нужного вам домена одиночного сайта (а он там должен уже быть, если нет, то добавьте) меняем папку на корневую папку вашей сети (к примеру, pulbic_html/site.ru).
9. Всё, сайт перенесён! Теперь, активируем на сайте нужную тему и настроим все плагины, т.к. не всегда это происходит автоматически.
Если вдруг не видны картинки, посмотрите в админке в Медиафайлах их URL. Иногда бывает надо зайти в настройки сети -> настройки сайта -> вкладка «Настройки» . И там поискать путь для uploads. В поле пути не должно быть ничего, если там что-то написано, оно будет добавляться к уже существующему у нас пути «wp-content/uploads/sites/XX».
Ура! Теперь всё должно работать! Но если не работает, не расстраивайтесь, возможно, что это ещё не злой рок, а вы попросту что-то упустили в этих 9 «простых» шагах
Если менялся адрес сайта, то вот тут показано, какие таблицы и записи в БД нужно изменить.
Команда для замены текста в таблице БД
UPDATE table SET field = REPLACE(field, 'старое слово', 'на новое слово');
Можно использовать плагин Velvet Blues Update URLs для замены ссылок в БД после переноса.
Вставка "Хлебных крошек"
Плагин Breadcrumb NavXT
Для отображения где-нибудь в конце header.inc темы (например, для темы Basic) нужно вставить код вызова
<div class="breadcrumbs" typeof="BreadcrumbList" vocab="https://schema.org/">
<?php
if(function_exists('bcn_display'))
{
bcn_display();
}?>
</div>
Лучше в дочерней теме, т.к. при обновлении темы файл перезапишется и нужно обновлять снова.
Опубликовано