Я написал плагин для моего случая блога на двух языках на основе 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');
?>
Поделиться
Комментарии
Нет. Кука одна
я просто добавил следующее:То есть в зависимости от домена выбирается язык. Естественно вместо моего домена вам надо подставить свой Если уж для вас так сложно и сами не справитесь - могу сделать для вас решение на заказ.if(strcmp($_SERVER['SERVER_NAME'], 'en.brainstorm.name') == 0){ $polyglot_settings['lang_pref'] = 'en'; }else{$polyglot_settings[’lang_pref’] = ‘ru’; }
Спасибо за
В апаче - можно
Илья, не
Не поймаю. Там
Положи
Senk
Hi! It seems to be a very
This is just a little hack
I know the polyglot, I know