Я видел несколько вопросов, которые выглядят одинаково, но все они заканчиваются мультисайтом . Для удобства обслуживания, производительности и безопасности я не хочу использовать мультисайты. Поэтому, пожалуйста, потерпите меня.
Вот о чем я думаю:
.
|_____branch1 // for branch1.domain.com
| |_____themes
| |_____plugins
|
|_____branch2 // for branch2.domain.com
| |_____themes
| |_____plugins
|
|_____branch3 // for branch3.domain.com
| |_____themes
| |_____plugins
|
|_____index.php
|_____WordPress
|_____wp-config.php
Как видите, каждый домен имеет свою собственную базу данных и каталог контента, но только один экземпляр WordPress. Теперь темы, плагины и базы данных становятся меньше и независимее. Тогда было бы гораздо проще поддерживать масштабирование ...
Но возможно ли это? Если вы уже сталкивались с такой же проблемой, пожалуйста, поделитесь своими мыслями! Я действительно ценю твою помощь.
customization
multisite
SarahCoding
источник
источник
Ответы:
Как сказал @ tom-j-nowell в комментарии к OP, мультисайты могут сделать это проще.
Производительность и безопасность на самом деле не являются проблемой для мультисайтов (по крайней мере, не больше, чем для обычных установок), но я согласен, что мультисайты иногда могут быть проблемой, потому что многие плагины (как пользовательские, так и сторонние) могут не правильно работать на мультисайтах, или, может быть, потому, что вы хотите полностью разделить пользователей разных сайтов.
Тем не менее, то, что вы хотите достичь, не так сложно.
Что вам нужно изменить между установкой:
Конфигурирование может быть выполнено с использованием констант.
wp-config.php
Единственная проблема в том, как их переключать на основе URL.Переменная сервера
'SERVER_NAME'
должна работать для вас, по крайней мере, если ваш веб-сервер настроен правильно.Например, вы можете создать папку с именем
/conf
на том же уровнеwp-config.php
файла и/WordPress
папки.В эту папку вы можете добавить несколько файлов:
branch1.domain.com.conf
branch2.domain.com.conf
branch3.domain.com.conf
внутри каждого из них вы можете сделать что-то вроде
Это изменится в каждом файле конфигурации в соответствии с «веткой».
После этого в вашем уникальном
wp-config.php
можно так что-то вроде:Выше происходит то, что на основе имени сервера вы загружаете другой файл конфигурации (если он найден), и если файл конфигурации не определяет какую-либо конфигурацию по умолчанию (или файл не найден), конфигурация устанавливается по умолчанию.
Приятно то, что для добавления новой ветки вам просто нужно создать папку ветки и указать
.conf
имя для нового домена ветки, и все готово, на стороне WP нечего менять.Линия:
где я получаю доменное имя. В качестве первого варианта я использую переменную среды, поскольку есть вероятность, что
$_SERVER['SERVER_NAME']
она не будет работать в контексте командной строки, например, при использовании WP CLI. В этих ситуациях вы можете установить переменную окружения, чтобы заставить WP использовать настройки из определенной ветви.Обратите внимание, что в специфичных для ветви файлах конфигурации я изменяю
WP_CONTENT_DIR
и автоматически устанавливаю папку плагинов и тем в соответствующие подпапки/plugins
и/themes
подпапки веток.Возможная проблема здесь, если вы хотите открыть общий доступ к
/uploads
папке (куда загружаются файлы).По умолчанию эта папка является подпапкой каталога содержимого, поэтому при использовании рабочего процесса над ней она будет
/uploads
подпапкой корневой папки каждой ветви.Если это не проблема для вас, а просто пойти на это, в противном случае самым простым решением будет сделать
/uploads
в каждой папке ветки символическую ссылку на папку реальных загрузок, которой вы хотите поделиться.источник
$_SERVER['SERVER_NAME']
она ненадежна ./uploads
реж не проблема. Я также проверил с WP CLI, если мы передаем--url
параметр для каждого сайта, он работает нормально :)server_name
в nginx илиServerName
в Apache или что-то еще, что подходит для вашего веб-сервера, это$_SERVER['SERVER_NAME']
будет просто работать. Даже если WP CLI может работать с использованием--url
параметров, другие инструменты командной строки могут иметь проблемы, если вы не используете переменную окружения. WP CLI «макетирует» URL запроса в контексте CLI, другие команды, вероятно, этого не сделают.SERVER_NAME
все было настроено правильно. О env vars, я использовал phpdotenv, чтобы это исправить. В настоящее время, кажется, все работает отлично :)Это возможно с помощью символической ссылки и небольшого планирования. Я сделал кое-что в сети для того же. Наконец, соберите все вещи, и все заработало.
Я запустил несколько сайтов, все они используют одну и ту же тему и папку плагинов. Одни и те же папки работают для мультисайтовых и одиночных сайтов. Но вы должны быть осторожны с определенными плагинами, которые могут быть только для Multi / Single site и быть странными.
Я сделал каталог как master-tnp / themes и master-tnp / plugins. Затем сделайте символическую ссылку на каталог WordPress с помощью команды ln -s.
Подводные камни также в конфигурациях сервера. Убедитесь, что директива «следовать символическим ссылкам» разрешена.
Если вы хотите использовать одну установку WordPress, я собрал подробное руководство о том, как я это сделал, по адресу https://vaish.co/multiple-sites-single-wordpress-directory
источник