Привет! Как я и обещал в своем первом блоге здесь я буду делиться проблемами с которыми я столкнулся и наработками по их решению, к которым я пришел. Первое, чем хотелось бы поделиться это создание Multisite на WordPress.
Возможно кто-то скажет, что мои решения слишком костыльны — для вас открыты комментарии. Напишите свое виденье решения и я постараюсь добавить его в свой блог.

Немного теории: что такое мультисайт, кому и зачем может понадобиться несколько сайтов на одном движке. Многие источники гласят:

Multisite (мультисайт) — это режим работы WordPress, который позволяет использовать имеющиеся файлы ядра и существующую базу данных для создания сети из сайтов WordPress. При этом каждый сайт в сети имеет свои собственные настройки, а плагины, темы и пользователи становятся общими.

Чем удобен режим Multisite
  • Пользователям не нужно заводить более одной учетной записи, вы можете легко добавить существующего пользователя к новому сайту в сети
  • Устанавливать плагин для каждого отдельного сайта не нужно, вы устанавливаете плагин лишь один раз, и активируете его на каждом сайте по мере необходимости
  • При желании плагины можно принудительно активировать для всех сайтов в сети
  • Обновлять ядро, темы и плагины нужно лишь один раз, а не для каждого сайта отдельно
  • Вы можете использовать общую тему для каждого сайта, или создать дочерние темы для отдельных сайтов в сети
  • Обмен данными между сайтами в сети становится гораздо легче и быстрее
Роль супер-администратора

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

Установка и настройка Multisite

Установка режима сети в WordPress занимает не больше нескольких минут.

1. Подготовка

Если Вы собираетесь разворачивать сеть на живом сайте, не забудьте сделать полную резервную копию директории WordPress, а так же полную копию базы данных. Да и вообще, лучше это сделать в любом случае, кроме, разве что, случая, когда настройка сети идет на свежеустановленном WP, которому ничего не страшно 🙂

После этого проверьте, поддерживает ли ваша установка WordPress «красивые» ссылки (Параметры → Постоянные ссылки). Деактивируйте все плагины, их можно будет активировать после установки сети. Деактивация плагинов нужна для того, чтобы активировать сеть, ведь пока хоть один плагин будет включен — активировать сеть не получится.

2. Установка режима сети

Откройте конфигурационный файл WordPress wp-config.php и найдите следующую строку:
require_once(ABSPATH . ‘wp-settings.php’);
И перед ней добавьте директиву, которая включает возможность установки режима Multisite:
/* Multisite */
define( ‘WP_ALLOW_MULTISITE’, true );
После этого зайдите в панель администрирования WordPress и в разделе Инструменты (Tools) появится новый пункт Установка сети (Network Setup). На этом экране вы сможете выбрать тип сети и запустить установку. Мы рекомендуем использовать Multisite в режиме субдоменов.

При завершении установки WordPress вам предложит добавить несколько новых директив в файл wp-config.php и несколько строк в файл .htaccess. После чего нужно повторно войти в панель администрирования, уже как супер-администратор.

В итоге, для установки сайта в подпапки (поддиректории), вставка в файле wp-config будет выглядеть так:
/* Multisite */
define(‘WP_ALLOW_MULTISITE’, true);
define(‘MULTISITE’, true);
define(‘SUBDOMAIN_INSTALL’, false);
define(‘DOMAIN_CURRENT_SITE’, ‘domain.com’);
define(‘PATH_CURRENT_SITE’, ‘/’);
define(‘SITE_ID_CURRENT_SITE’, 1);
define(‘BLOG_ID_CURRENT_SITE’, 1);
Вместо domain.com — ваш основной домен.

Код для .htaccess файла:

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ — [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ — [L] RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L] RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L] RewriteRule . index.php [L]

Для установки мультисайтов в режиме поддоменов:

/* Multisite */
define(‘WP_ALLOW_MULTISITE’, true);
define(‘MULTISITE’, true);
define(‘SUBDOMAIN_INSTALL’, true);
define(‘DOMAIN_CURRENT_SITE’, ‘domain.com’);
define(‘PATH_CURRENT_SITE’, ‘/’);
define(‘SITE_ID_CURRENT_SITE’, 1);
define(‘BLOG_ID_CURRENT_SITE’, 1);

То есть, для того же, чтобы использовать возможность создания сайтов на поддоменах, измените строку:

define(‘SUBDOMAIN_INSTALL’, false);
на:
define(‘SUBDOMAIN_INSTALL’, true);

Код для .htaccess файла для режиме поддоменов:

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ — [L]

# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ — [L] RewriteRule ^(wp-(content|admin|includes).*) $1 [L] RewriteRule ^(.*\.php)$ $1 [L] RewriteRule . index.php [L]

3. Администрирование сети

После входа в верхнем меню WordPress появится новый пункт «Мои сайты» (My Sites), откуда вы сможете легко перейти в панель управления сетью. Там вы сможете добавлять новые сайты, управлять пользователями, устанавливать темы и плагины и управлять прочими настройками сети.

Учтите, что администраторы больше не смогут устанавливать новые темы и плагины, в режиме сети это может сделать только супер-администратор. Супер-администратор может так же дать права супер-администратора любому другому пользователю в сети при редактировании его профиля.

Готово, мультисайт настроен, активирован и Вы можете развивать свою сеть сайтов на WordPress.

Чуть позже, я расскажу о наиболее частых проблемах, которые встречаются при создании сети на базе WordPress Multisite.