+0 000-000-00-00

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

Рекомендуемый официально способ с экспортом и импортом записей имеет существенные недостатки.

  1. при таком методе изменяются id записей и некоторые ссылки перестают работать. А точнее, очень многие.
  2. потом возникают трудности с настройкой доменов и мультисайтов на новом хостинге. У меня были какие-то глюки, сайт толком не заработал.
  3. Перенос плагинов - та еще песня при экспорте-импорте. Большинство из них перестают работать правильно, т.к. id записей, страниц, тегов и рубрик на новом сайте другие.
  4. у меня на одном из хостингов экспорт не работал, поэтому метод отпал сам собой

Поэтому лучше использовать способ с переносом таблиц базы данных. Говорят, что при этом переносятся лишние данные, но лучше лишние, чем "геморрой" с настройкой сайта с нуля. Итак, далее цитата с источника по ссылке.

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

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>

Лучше в дочерней теме, т.к. при обновлении темы файл перезапишется и нужно обновлять снова.

    Опубликовано

    Menu