Мультисайт в WordPress

WordPress Мультисайт – это такой вариант конфигурации WP, который позоляет вам использовать неограниченное количество сайтов в пределах одной-единственной установки WordPress и управлять всеми этими сайтами как суперадминистратор.

Режим мультисайтовости стал частью ядра WordPress в версии 3.0, раньше это был плагин WordPress Multi-user (MU), и поэтому даже сейчас вы можете встретить название мультисайтовости как WordPress MU.

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

Особенности WordPress Multisite

Из особенностей можно отметить следующее:

  • Общий WordPress, общая база данных, общие темы и плагины, общие ресурсы сервера.
  • В качестве URL-адресов сайтов сети вы можете использовать либо подпапки site.ru/site1, либо поддомены site1.site.ru, либо даже независимые домены для каждого сайта!
  • Очень легко и просто добавлять пользователей с одного сайта на другой, при этом у одного и того же пользователя могут быть разные роли на разных сайтах. Это также значит, что у каждого сайта может быть собственный администратор.
  • Вы (как суперадминистратор) даже можете добавить пользователям возможность регистрироваться и создавать свой собственный сайт.
  • Очень удобно то, что обновления устанавливаются и применяются сразу ко всем сайтам сети.
  • Также мне нравится возможность активировать какие-либо плагины как на некоторых сайтах сети, так и принудительно для всех сайтов одновременно.
  • Ну и добавлю по поводу тем — то, что на каждом подсайте можно использовать разные темы, это понятно, но вы также можете использовать и одну тему, индивидуально подстроенную под каждый сайт при помощи дочерных тем.

Установка сети WordPress Мультисайт

Шаг 1 – Подготовка

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

Также на первом шаге я предлагаю вам решить, хотите ли вы использовать поддиректории или поддомены (прилинковка целых доменов тоже возможна, но считается следующем этапом, когда сеть уже установлена).

  • Если вы используете поддиректории, то всё, что вам нужно, это рабочий mod_rewrite (если на сайте вы уже используете постоянные (или как их ещё называют — красивые) URL, то значит, что всё окей.
  • Если вам нужны поддомены, тогда вам потребуется настроенная маска для поддоменов. Настраивается она для каждого домена отдельно.Кроме того, инструкции могут быть индвидуальными для каждого хостинга/сервера. Например на своём хостинге (beget) я просто написал в супорт и сказал им, для какого домена хочу включить маску и мне всё сделали.в cPanel же, насколько я знаю, достаточно создать поддомен, начинающийся со знака * *.вашдомен.ru.

Также будет не лишним упомянуть, что WordPress уже должен быть установлен.

Шаг 2 – Настройка wp-config.php

Откройте конфигурационный файл WordPress wp-config.php, который лежит в корне вашего сайта или на одну директорию выше (для этого может понадобиться подключиться по FTP) и найдите следующую строку:

require_once( ABSPATH . 'wp-settings.php' );

В любом месте до этой строки вставьте следующую директиву, которая включает возможность установки режима Multisite:

/* Включение режима WordPress Мультисайт */
define( 'WP_ALLOW_MULTISITE', true );

Шаг 3 – Деактивируйте все плагины

Заходим в Плагины и деактивируем (но не удаляем) их все.

Если вдруг вы пропустите этот шаг, то в следующем шаге вас всё равно попросят это сделать.

Шаг 4 – Установка сети

После сохранения файла переходим в админку сайта и видим новый пункт в меню Инструменты > Установка сети.

Установка сети WordPress Multisite

После того, как нажимаем кнопку «Установить», попадаем на страницу с пошаговой инструкцией установки:

Обратите, что если вы выбрали в качестве опции «Поддомены», то возможно, что в следующем шаге вы столкнётесь с ошибкой «Возможно, маска DNS настроена неправильно!», там также будут и инструкции, как её настроить. Если не сможете разобраться сами, то думаю можно написать в супорт хостинга и они вам всё сделают (по крайней мере мне на beget сделали).

Шаги установки сети WordPress Multisite

Выполняем указанные инструкции и после того, как вы сохранили изменения в файлах, на этом же экране кликаем внизу на ссылку «Войти». Авторизуемся, и в результате у нас в левом верхнем углу появляется выпадающее меню Мои сайты.

как перейти в консоль управления сетью WordPress Мультисайт

Какие фактические отличия от обычного сайта на WordPress?

И для того, чтобы вы стали настоящим мастером по мультисайтовости, я залезу под капот (но не слишком глубоко) и покажу вам, чем отличается мультисайт от обычной установки WordPress.

Какие отличия в админке?

Вот так выглядит консоль управления сетью и доступ к ней имеется только у суперадминистраторов (это же вы!).

Консоль сети WordPress Multisite

Как видите, всё очень похоже на стандартную консоль WordPress, нет только пунктов управления контентом, зато появился пункт меню «Сайты».

Также некоторые плагины будут добавлять свои настройки именно сюда, но большинство — непосредственно в админки подсайтов сети.

И, как я уже говорил, про администрирования я напишу отдельный пост на следующей неделе.

Какие отличия в файлах?

Что касается файлов, то если не считать изменений, которые мы вносили в wp-config.php и в .htaccess (для поддиректорий), остаётся только одно отличие — папка загрузок сайта (обычно wp-content/uploads).

Сама папка загрузок используется как есть только для первого созданного сайта сети (основного, с ID 1), затем же в ней создаётся подпапка sites, а в ней в свою очередь ещё подпапки, название каждой — ID сайта, для медиафайлов которого используется.

Чтобы было более наглядно, вот как это выглядит:

papki-zagruzok-sajtov

Какие отличия в базе данных?

В базе данных тоже нет ничего замысловатого:

  • Добавляется несколько новых таблиц, содержащих информацию о сети и о сайтах в ней, к примеру таблица wp_sitemeta содержит все-все настройки сети (аналог wp_options).
  • Таблицы стандартной установки WordPress дублируются для каждого подсайта, но с тем условием, что к их (таблиц) префиксам добавляется ещё и ID сайта в сети. Например wp_wp_1_wp_2_ и так далее.

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

В управлении (администрировании) сети WordPress Multisite по сути нет ничего сложного. Но тем не менее люди иногда сталкиваются с трудностями, поэтому в этой, второй части поста про мультисайтовость, я постараюсь рассказать и показать, что к чему.

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

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

Попасть в неё всегда можно через админ-бар, Мои сайты > Управление сетью > Консоль.

Как попасть к консоль управления сетью.

Добавление сайта

Переходим в Сайты > Добавить новый.

Добавление нового сайта в сети WordPress Multisite

Так как в предыдущей части поста я устанавливал свой мультисайт в поддиректории, то при создании подсайта мне предлагают указать название поддиректории.

Новый сайт сети WP Multisite

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

Управление сайтами сети

Если вы наведёте на какой-либо из сайтов в меню Сайты, то у вас появится список ссылок-действий (для главного сайта кстати доступны только «Изменить», «Консоль», и «Перейти»).

Управление сайтами сети

Тут я пожалуй начну с конца.

  • Кнопка Перейти позволяет открыть главную страницу соответствующего сайта прямо в этой же вкладке.
  • Кнопка Удалить полностью удаляет выбранный сайт без возможности восстановления.
  • Деактивировать, в Архив и Спам — как по мне, так эти три кнопки выполняют абсолютно одно и то же действие, при нажатии на любую из них сайт не удалится, но станет недоступен как для посетителей, так и для пользователей (в том числе) администраторов сайта. Ну почти — администраторы подсайтов смогут видеть свои сайты без доступа в админку в случае, если сайт помечен как спам.Суперадминистраторы же будут иметь доступ в любом случае, как будто никакая кнопка и не нажималась.Также любое из этих трёх действий в любой момент можно отменить и сайт будет доступен как обычно.
  • Консолью я думаю понятно — при нажатии вы переходите в админку конкретного сайта.
  • И последнее, кнопка Изменить. При нажатии на неё, у вас откроется страница с четырьмя вкладками настроек.
Изменение сайта сети WordPress Multisite

Думаю тут особых комментариев не нужно, вкладки «Пользователи» и «Темы» будут рассмотрены дальше по ходу поста.

Что касается вкладки «Настройки», то она просто содержит практически все опции (настройки) каждого сайта в простом виде — название настройки в базе данных и текстовое значение (массивы тут не поддерживаются и не доступны для редактирования). Будьте осторожны с настройками там и не меняйте то, в чём не уверены.

Добавление пользователя. Суперадминистратор

Если вы просто добавляете пользователя через консоль сети в меню Пользователи > Добавить нового, тогда пользователь добавляется глобально в базу сети, однако не присваивается ни к какому сайту (это делается отдельно), при этом пользователю приходит по email ссылка, с помощью которой он сможет установить свой пароль и в этоге получит доступ к странице в админке, в которой он сможет отредактировать данные профиля.

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

Добавление пользователя в WordPress Multisite.

Ах да, суперадминистратор это такой человек, который имеет доступ абсолютно ко всему и на всех сайтах, хотя наверное об этом и так нетрудно догадаться. Сделать кого-либо суперадмином очень просто, достаточно прямо из консоли сети перейти в Пользователи и затем на страницу конкретного пользователя. Там будет чекбокс.

Сделать пользователя сети суперадминистратором.

В консоли сети переходим в Сайты > Все сайты, выбираем нужный, наводим на него мышкой, жмём ссылку «Изменить» и на открывшейся странице переходим на вторую вкладку — Пользователи.

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

Добавление пользователей к конкретному сайту в WordPress Multisite

Особенности установки плагинов и тем на WordPress Multisite

У администрирования плагинов и тем в сети WordPress Multisite существует одно принципиальное различие, поэтому предлагаю прочитать эту главу внимательно.

Когда через консоль сети вы устанавливаете/загружаете тему, то сначала она недоступна для использования на сайтах сети. Вы сразу же можете нажать Разрешить для сети — тогда тема сразу станет доступна для использования на всех сайтах.

Разрешить тему для сети WordPress Multisite

Однако, вы можете сделать так, чтоб тема была доступна для использования только на одном или только на нескольких сайтах сети, для этого переходите в управление сайтом на вкладку «Темы» и тут уже вы можете разрешить тему непосредственно для данного сайта.

Разрешить тему для конкретного сайта сети WP Multisite

Ситуация с плагинами чуть ли не противоположная — после установки плагина на сайт он становится доступным для активации сразу на всех сайтах сети, однако, если вы кликаете Активировать для сети, то он становится принудительно включен для всех сайтов.

Принудительная активация плагина для всех сайтов сети.

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Если вам нужна помощь с сайтом или разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда будем рады вам помочь!

Комментарии — 7

Оставить комментарий

Если вы хотите добавить код, не забудьте обернуть его в <pre lang="php"></pre>, если же код – меньше одной строчки, то можно и в <code></code>.