Wordpress на двух и более доменах

Я написал плагин для моего случая блога на двух языках на основе Wordpress и плагина Polyglot. Я решил сделать блог на двух языках - на русском и английском. И расположить его на двух поддоменах: русскую версию - на brainstorm.name, английскую - на en.brainstorm.name. Чтобы наладить правильную работу Wordpress, пришлось написать следующий плагин:
< ?php 
/* 
Plugin Name: My own cookie 
Plugin URI: http://brainstorm.name/# 
Description: Sets cookie to the whole domain 
Author: Ilya V. Azarov 
Version: 1.0 
Author URI: http://brainstorm.name 
*/ 

define(MYOWNCOOKIEDOMAIN, '.brainstorm.name'); 
// to solve problem with cookies 
function wp_setcookie($username, $password, $already_md5 = false, $home = '', $siteurl = '', $remember = false) { 
        if ( !$already_md5 ) 
                $password = md5( md5($password) ); // Double hash the password in the cookie. 

        if ( empty($home) ) 
                $cookiepath = COOKIEPATH; 
        else 
                $cookiepath = preg_replace('|https?://[^/]+|i', '', $home . '/' ); 

        if ( empty($siteurl) ) { 
                $sitecookiepath = SITECOOKIEPATH; 
                $cookiehash = COOKIEHASH; 
        } else { 
                $sitecookiepath = preg_replace('|https?://[^/]+|i', '', $siteurl . '/' ); 
                $cookiehash = md5($siteurl); 
        } 

        if ( $remember ) 
                $expire = time() + 31536000; 
        else 
                $expire = 0; 

        setcookie(USER_COOKIE, $username, $expire, $cookiepath, MYOWNCOOKIEDOMAIN); 
        setcookie(PASS_COOKIE, $password, $expire, $cookiepath, MYOWNCOOKIEDOMAIN); 

        if ( $cookiepath != $sitecookiepath ) { 
                setcookie(USER_COOKIE, $username, $expire, $sitecookiepath, MYOWNCOOKIEDOMAIN); 
                setcookie(PASS_COOKIE, $password, $expire, $sitecookiepath, MYOWNCOOKIEDOMAIN); 
        } 
} 

// we writing filter to make get_option('home') return correct value for the domain 
function option_home_filter($text = ''){ 
   if($_SERVER['HTTP_HOST'] == 'brainstorm.name') return 'http://brainstorm.name'; 
   if($_SERVER['HTTP_HOST'] == 'en.brainstorm.name') return 'http://en.brainstorm.name'; 
   die('shit happened'); 
} 

add_filter('option_home', 'option_home_filter'); 
?>

Комментарии

Submitted by Azarov on
Нет. Кука одна для всех поддоменов Если бы не переписал функцию авторизации - она была бы разная. К полиглоту привязывается примитивно. Надо его пропатчить — чтобы дефолтовый язык выбирался в зависимости от домена. После вот этой строки в коде плагина
$polyglot_settings['lang_pref'] = polyglot_get_users_pref_lang();
я просто добавил следующее:
if(strcmp($_SERVER['SERVER_NAME'], 'en.brainstorm.name') == 0){
    $polyglot_settings['lang_pref'] = 'en';
}else{
$polyglot_settings[’lang_pref’] = ‘ru’; }
То есть в зависимости от домена выбирается язык. Естественно вместо моего домена вам надо подставить свой Если уж для вас так сложно и сами не справитесь - могу сделать для вас решение на заказ.

Submitted by Ka82 (не проверено) on
Спасибо за быстрый и четкий ответ. Илья, если не затруднит у меня к Вам имеется ещё один вопрос ;). Насколько я понимаю, вордпресс у вас установлен на brainstorm.name, а с en.brainstorm.name стоит ServerAlias в конфиге апача, верно?

Submitted by Ka82 (не проверено) on
Илья, не понятно как заставить работать твой плагин - у меня есть вордпрессовский блог с установленым Полиглотом. Как его заставить работать так как у тебя, объясни пожалуйста, очень интересно. Насколько я понимаю этот плагин вешает разную куку для разных сабдоменов. Как это можно привязать к полиглоту и как заставить один движок вордпресса работать на разных сабдоменах?

Submitted by Azarov on
Не поймаю. Там правила идиотские. Как раз чтобы не допустить траффика. Есть гугль. Кому надо тот найдет. Кому лень тот закажет тюнинг Wordpress.

Submitted by coureur (не проверено) on
Положи куда-нить на wp-plugins.net, поймаешь много трафика :)

Submitted by riil (не проверено) on
Hi! It seems to be a very useful plugin for me. But please tell me (in English) how to use it!

Submitted by Azarov on
This is just a little hack to make work polyglot on two domains. English original instruction for polyglot here If you're interesting in whole reconfiguration of WP to make multilanguage blog I can help you but not for free. This is not a trivial task.

Submitted by riil (не проверено) on
I know the polyglot, I know what is this plugin for, and what I would like to know, is how can I install it to my blog. So, how to install for the more-domain use. Thx.