Несколько блогов на одном движке Wordpress и с одной БД
Thursday, 09 Apr 09 в 22:51
Недавно я рассказывал как сделать несколько Wordpress блогов с одной базой данных. Это полезно, если у хостера имеются определенные ограничения на количество БД. Но есть еще более экономное решение – использовать одну установленную систему Wordpress. Первый случай может пригодиться, когда у вас есть несколько блогов на хостинге и вы просто добавляете новые проекты, то есть не требуется обновление старых, доработка плагинов и т.п. Они как работали, так и продолжают работать. Второй вариант лучше использовать, если вы изначально планируете создавать сетку блогов или просто несколько простых проектов. Ведь часто кроме ограничения на количество БД у хостеров есть лимиты на занимаемое дисковое пространство – смысл тратить его на одни и те же файлы, плагины.
Кроме того, вы получите хорошую экономию по времени – обновлять плагины можно будет в одном месте, хотя не уверен насчет дальнейшей их активации по отдельности. На самом деле процесс достаточно прост. Используется трюк, как и в прошлой статье, поэтому можете ее прочитать для общего развития.
Первым делом необходимо настроить домены блогов дабы они ссылались в один и тот же каталог. Внимание, я рассказываю как все работает у моего хостера, поэтому не могу на 100% гарантировать такой же алгоритм у вас. Если возникнут вопросы, проще всего обратиться в их службу поддержки (собственно, я так и поступал). Так вот, допустим, есть 3 сайта – site1.ru, site2.ru, site3.ru. При создании их на хостинге, скорее всего, для каждого будет выделена отдельная папка на FTP. Суть метода – направить все домены в одну (главную директорию). Для этого используются алиасы. В админке hqhost, например это выглядит приблизительно так:

Для каждого сайта (домена) редактируем алиасы – для второстепенных (site2.ru, site3.ru) убираем и добавляем их к основному (site1.ru). Пожалуй, повторюсь, если вы мало что поняли в моих словах – лучше обратиться в тех. поддержку хостера, там должны помочь:)
Итак, в результате этой процедуры каждый сайт будет «смотреть» в одну директорию – главного блога. Именно туда мы заливаем все исходники Wordpress, плагины, шаблоны. После этого заходим в файл wp-config.php, где находим строку $table_prefix = ‘wp_’; Она задает префикс для таблиц блога, нужно сделать так, чтобы генерировались разные префиксы в зависимости от домена. Для этого используем код:
$prefix = $_SERVER["HTTP_HOST"]; $prefix = str_replace("www.", "", $prefix); $prefix = str_replace("-", "", $prefix); $prefix = str_replace(".", "", $prefix); $table_prefix = $prefix."_" ;
В итоге вместо wp_ получим префикс site1ru_, site2ru_ и т.п. Можете в последней строке добавить любые символы, например:
$table_prefix = "wp".$prefix."_" ; // получим wpsite1ru_
Теперь каждый раз, когда вы будете заходить по тому или иному домену, вы будете видеть тот сайт (блог), который ему соответствует. Поскольку все настройки системы хранятся в БД, то настраивать каждый проект придется по отдельности. Это же касается шаблонов – загружаете все в одну папку, а для блогов выбираете разные.
Работаться в данном методе мне здорово помогла статья в проекте Блог Awtor. Автор пошел еще дальше и дополнил данную установку важными деталями. Речь идет о файлах Robots.txt и sitemap.xml - ведь для каждого сайта они должны быть разные. Для решения этой проблемы создается несколько файлов с идентичными названиями (структурой) robots-site1.ru.txt, robots-site2.ru.txt и sitemap-site1.ru.xml, sitemap-site2.ru.xml. Далее файл .htaccess дополняем конструкцией:
RewriteCond %{REQUEST_FILENAME} /robots.txt$ [NC] RewriteRule ^ /robots-%{HTTP_HOST}.txt [L] RewriteCond %{REQUEST_FILENAME} /sitemap.xml$ [NC] RewriteRule ^ /sitemap-%{HTTP_HOST}.xml [L]
Теперь при заходе с разных URL адресов будут выбираться нужные файлы.
Еще автор советует для загрузки изображений создавать разные папки в uploads, которые потому указывать в настройках блога. Также он замечает, что в процессе работы возникают нерешенные проблемы с некоторыми плагинами: watermark, md5, дополнительное кеширование. В принципе, в 95% случаев, думаю, без них можно обойтись, поэтому данный момент не столь критичен. Если создавать, например, простые сателлиты, то хватит и стандартного набора плагинов.
Вот, кстати, нашел в сети еще один вариант реализации нескольких сайтов на одном движке wordpress. Там подход несколько иной, позволяющий для каждого сайта использовать отдельный конфиг файл. А это значит, что теоретически можно под одной админкой объединить даже сайты с разных баз данных.
Также в процессе поиска решения наткнулся на статью с официального сайта, где собраны различные реализации для нескольких проектов – от блогохостингов до целых блого-ферм.
P.S. Я сейчас не в Киеве, поэтому не отвечаю на письма и не модерирую комментарии, приеду в субботу – все сделаю.
Доверьте создание сателлитов профессионалам – качественные оригинальные тексты, дизайн. Разработка проектов под ключ.
Смотрим креативные и яркие дизайны сайтов для вдохновения.
Желающих похудеть – гречневая диета.


Бэкап - резервное копирование информации, в данном случае базы данных блога, чтобы потом можно было его восстановить в случае возникновения каких-то сложностей. Вещь весьма полезная, тут и говорить нечего, поэтому перейду сразу к реализации. Есть два варианта – с помощью плагина и через phpmyadmin. О том, как действовать в крайнем случае, расскажу в самом конце поста, хотя лучше всего подобного не допускать. Советую каждому блоггеру задуматься о бекапе, если ваш хостер не практикует подобных действий в качестве постоянной или дополнительной услуг.





