Как изменить основной блог (сайт) в WordPress Multisite

Ниже рассмотрим как изменить основной сайт (блог) сети в WordPress Multisite. Например, у нас уже установлена и работает сеть сайтов, и теперь нам нужно изменить основной сайт сети - основной сделать не основным, а один из под-сайтов сделать основным.

Чтобы самому разобраться как WP определяет главный сайт, я бы посоветовал залезть в ядро и разобраться в методе WP_Network::get_main_site_id(). По идее там вы найдете все ответы как определяется главный сайт (блог) сети сайтов и на основе этой информации поймете как и что нужно сделать, чтобы ничего не испортить.

Для проведения преобразования необходимо внести изменения в wp-config.php, а также в базу данных.

Шаг 1: Создайте резервную копию файлов и базы данных

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

Шаг 2: Отредактируйте wp-config.php

Откройте файл и найдите там строки:

define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );

Число 1 указывает на то, какой из сайтов является сайтом сети сайтов и какой из сайтов является основным блогом в текущей сети. Обычно это один и тот же сайт (блог).

Чтобы узнать ID, которые вы должны ввести здесь, вам нужно открыть вашу базу данных - таблицу wp_blogs:

Таблица WordPress wp_blogs.

Там вы найдете колонки blog_id и side_id, а также связанные с ними домен и путь.

Теперь укажите нужные blog_id в wp_config.php и сохраните файл. В нашем случае это будет (см, ниже):

define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 2 );

SITE_ID_CURRENT_SITE обычно не изменяется в 99% случаев у вас есть всего одна сеть сайтов (см. таблицу wp_sites).

Значение blog_id для BLOG_ID_CURRENT_SITE - блог который вы хотите сделать основным сайтом, также можно найти на странице админки: My Sites > Network Admin > My Sites.

Шаг 3: Настройка базы данных

Если вы пропустили шаг 2, вам нужно открыть базу данных WordPress и зайти в таблицу wp_blogs.

Для того чтобы установить новый сайт (блога) как основной, вам нужно настроить колонку domain. Здесь нужно ввести значение из исходной страницы.

Перед изменением поля domain в таблице wp_blogs.
После изменения домена поля в таблице wp_blogs.

На этом настройка домена закончена.

Шаг 4: Редактирование таблицы wp_site

Теперь переключитесь на таблицу wp_site. Там вы найдете запись с полями id, domain и path.

Здесь вы должны убедиться, что в колонке domain находится тоже самое, что и в таблице wp_blogs. То есть запись, которую вы изменили.

Измените поле domain в таблице WordPress wp_site.

Шаг 5: Адаптируйте таблицу wp_post.

Если вы изменили домен или путь у сайта, то вам нужно исправить все ссылки в БД связанные с этими изменениями. Например, это ссылки на картинки.

Лучше всего это сделать через WP_CLI командой search-replace. Или можно через прямой запрос:

UPDATE wp_posts SET post_content = REPLACE ( post_content, 'http://old-url', 'http://new-url' );

ВАЖНО! Прямой запрос может сломать данные в БД, если замену в других таблицах и полях, например в wp_postmeta. Дело в том что URL (который заменяется) может находится в серриализованном массиве и если это так, то такая замена сломает сериализованные данные.

--

Не стесняйтесь оставлять комментарии, если у вас есть вопросы или замечания.

Вольный перевод: https://www.forge12.com/en/blog/change-the-primary-block-in-wordpress-multisite/