/ Wordpress / Multisite

Multisite

HIT

03.02.2016

6125

Мультисайт — это система объединения нескольких сайтов в одну систему, с единой админкой. К данному функционалу прибегают в случаях: мультирегиональности, мультиязычности а также других случаях.

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

Multisite — объединение нескольких сайтов на одной админке.

Настройка функционала Multisite:

  1. В системном файле wp-config.php находим строку
    require_once(ABSPATH . 'wp-settings.php');

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

    /* Multisite */ define( 'WP_ALLOW_MULTISITE', true );
  2. После этого зайдите в панель администрирования WordPress и в разделе Инструменты (Tools) появится новый пункт Установка сети (Network Setup). На этом экране вы сможете выбрать тип сети и запустить установку. Мы рекомендуем использовать Multisite в режиме субдоменов. При завершении установки WordPress вам предложит добавить несколько новых директив в файл wp-config.php и несколько строк в файл .htaccess, после чего вам необходимо повторно выполнить вход а панель администрирования, уже как супер-администратор.
После установки данной системы, администраторы не смогут редактировать (включать/отключать) плагины и темы, теперь сделать это может пользователь с правами Суперадминистратор

На хостинге необходимо сделать 2 вещи:

  1. Создать поддомен *.site.ru и прилинковать его к директории сайта.
  2. Прописать в DNS маску: *.site.ru A 8.888.888.88 (IP как у основного домена). Это необязательно, если создавать А-запись для каждого поддомена. Причем запись поддомена будет иметь более высокий приоритет над *-записью.
  3. [Для Бегет необязательно] В файле httpd.conf (Apache) прописать строку: ServerAlias *.site.ru (это называется wildcard для домена). Но в некоторых хостингах нет непосредственного доступа к этому файлу, нужно писать тикет в тех.поддержку с просьбой это сделать.

Несколько сайтов с разными доменами

Эту задачу может решить плагин WordPress MU Domain Mapping.

  1. ИЗ архива плагина копируем файл domain_mapping.php в /wp-content/plugins, а файл sunrise.php — в /wp-content
  2. В файле wp-config.php перед строкой
    require_once(ABSPATH . 'wp-settings.php'); 

    добавляем

    define( 'SUNRISE', 'on' );
  3. Работы на хостинге: нужно создать синоним основного сайта (алиас) — домен на котором будет второй сайт (Например: site.com)
  4. Создаем новый сайт в виде субдомена (domain.site.ru). В основном домене (site.ru) надо прописать A запись:
    Хост: domain, Тип: A, Значение записи: IP основного домена.
  5. После того как заработает новый подсайт на субдомене domain.site.ru, в его админке переходим в меню Domain Mapping в разделе Инструменты и переключаемся на другой домен site.com. Теперь сайт будет работать под доменом site.com.
  6. [Не уверен обязательно или нет..] Вносим небольшое изменение в файл wp-config.php
define( 'COOKIE_DOMAIN', $_SERVER['HTTP_HOST'] );
В статье могут быть неточности, в части — Несколько сайтов с разными доменами.

Единый шаблон мультисайта

Основная сложность, что в мультисайте функционирует один шаблон (тема).
Возможное решение:

if ( get_current_blog_id() == 1 ) :
// делаем что-нибудь только на первом сайте в сети
elseif ( get_current_blog_id() == 2 ) :
// делаем что-то на втором сайте
endif;

Решение проблемы — использование дочерних тем.

Алиасы к основному домену

В основном сайте в разделе инструменты нет настроек domain mapping. К основному сайту алиасы добавляем на хостинге (у алиасов делаем А-запись).
Если перейти по алиасу например site.org то может вылезти сообщение: «Регистрация отключена».
Чтобы этого не было прописываем в файле wp-config следующую строку (перед строкой «Это всё, дальше не редактируем. Успехов!»)

define( 'NOBLOGREDIRECT', 'http://site.ru' );

SSL для сети мультисайт

Если мультисайт изначально заведен на домен без https:// , то поменять его можно только через БД (таблица wp_options). Чтобы сертификат был и на поддоменах, нужно заказывать выпуск сертификатов для каждого поддомена (предварительно создав сами поддомены), или прописывать их в алиасах при заказе сертификата. И у поддомена также менять потом в БД siteurl и home.

Если в процессе создания поддоменов в панели хостинга создадутся поддмены (не в доменах, а в сайтах у Бегет) то поддомены нужно удалить.

Robots.txt для мультисайта

т.к. Мультисайт — это единая директория с сайтом, то возникает вопрос — как сделать robots.txt для поддоменов. Решением является плагин Multisite Robots.txt Manager (300+), он правда не обновлялся более 2-х лет, но работает как надо. В консоли каждого поддомена появляется настройка в которую мы прописываем содержимое файла
robots.txt, в т.ч. и для основного. При этом физически файла
robots.txt в основной директории сайта быть не должно.

Также в настройках указывается путь к sitemap.

При недавнем обновлении WordPress 5.9 плагин стал выдавать головной robots.txt на всех подсайтах. Проблема решилась удалением файла robots.txt из корня сайта.

Sitemap для сети мультисайт

Хорошо показал себя плагин Google XML Sitemaps. Он создает для поддоменов независимые карты сайта. Не забываем отключить sitemap плагина Yoast SEO, если используется.

Объединение в мультисайт действующих сайтов

  1. Превращаем основной сайт (домен) в мультисайт.
  2. Создаем доп. сайты. Отключая при этом на хостинге эти сайты как отдельные.
  3. После добавления доп. сайтов в БД появляются таблицы wp_2_, wp_3_ и т.д. Чтобы импортировать данные из предыдущего сайта нужно в исходной таблице изменить название таблиц на соответствующее значение в новой таблице wp_ > wp_2_. Сделать таким образом экспорт каждой таблицы (которые нужны), и импортировать их в БД мультисайта.
  4. Загруженные файлы (содержимое папки uploads) копируем в автоматически созданную папку соответствующую данному подсайту (например uploads/sites/2/).
  5. Настраиваем все плагины (SEO, sitemap, robots.txt), постоянные ссылки, настройки темы (theme_mods_названиетемы в таблице wp_options), размеры файлов (если необходимо перезагружаем размеры плагином regenerate thumbnail).
  6. Создаем при необходимости дочернюю тему и меняем в её файлах индивидуальные скрипты, счетчики (цели), стили, шаблоны и прочее.
Также необходимо поправить в записях и страницах ссылки на файлы, в связи с изменением папки unloads

Переход на несуществующий сайт сети

Если по какой-либо причине пользователь перешел на несуществующий сайт сети, то он попадает в системный шаблон wp-signup.php.

Чтобы это изменить, нужно прописать в wp-config следующую запись:

define( 'NOBLOGREDIRECT', 'https://site.ru' );

Ошибки связанные с работой Multisite

Не отображаются поддомены в списке сайтов.

Это происходит из-за того что суперадминистратор не ассоциирован с этими поддоменами и при создании поддомена был автоматически создан администратор. Необходимо перейти в каждый сайт через панель Управление сетью > Сайты и назначить администратора во вкладке Пользователи.

Поделиться в соц. сетях:

  • Комментарии
  • Вложения

Добавить комментарий

Пока нет комментариев. Будь первым!

Multisite
Вывод терминов таксономии
Рекомендации для васВывод терминов таксономииOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.