Изменить язык в WordPress с помощью пользовательского кода

У меня есть сайт в WP, который имеет несколько языков, таких как (English,German and French). вот URL выглядит так :http://example.com(english). http://example.com/?lang=fr(french) and http://example.com/?lang=de(german)
Я пытаюсь сменить язык перед загрузкой страницы. index.php но это создает проблему.
Мой код:

$currentUrl = 'this is current page url';
$store_code = "french";
switch ($store_code) {
case 'french':
$_baseurl = $currentUrl."?lang=fr";

echo "<script type='text/javascript'>window.location='{$_baseurl}'</script>";
break;
case 'german':
$_baseurl = $currentUrl."?lang=de";
echo "<script type='text/javascript'>window.location='{$_baseurl}'</script>";
break;
case 'mandarin':
$_baseurl = $currentUrl."?lang=zh";
echo "<script type='text/javascript'>window.location='{$_baseurl}'</script>";
break;
default:
$_baseurl = $currentUrl;
echo "<script type='text/javascript'>window.location='{$_baseurl}'</script>";
break;
}
Output.

Это генерирует URL, как это с пустой страницей.

http://example.com/?lang=fr?lang=fr?lang=fr?lang=fr?lang=fr?lang=fr?lang=fr?lang=fr?lang=fr?lang=fr?lang=fr?lang=fr?lang=fr?lang=fr?lang=fr

0

Решение

Я решил это с помощью условия перед переключением statment.It работает

define('WP_USE_THEMES', true);
require("../app/Mage.php");
umask(0);
Mage::app('default');
$currentUrl = Mage::helper('core/url')->getCurrentUrl();
$store_code = Mage::app()->getStore()->getCode();
if(Mage::getSingleton('core/session', array('name' => 'frontend'))->getData("foo") !='bar')
{

Mage::getSingleton('core/session')->setData("foo","bar");
switch ($store_code) {
case 'french':
$_baseurl = $currentUrl."?lang=fr";
echo "<script type='text/javascript'>window.location='{$_baseurl}'</script>";
break;
case 'german':
$_baseurl = $currentUrl."?lang=de";
echo "<script type='text/javascript'>window.location='{$_baseurl}'</script>";
break;
case 'mandarin':
$_baseurl = $currentUrl."?lang=zh";
echo "<script type='text/javascript'>window.location='{$_baseurl}'</script>";
break;
default:
$_baseurl = $currentUrl;
echo "<script type='text/javascript'>window.location='{$_baseurl}'</script>";
break;
}
}

На стороне Magento я установил сессию до события загрузки макета, как это.

Mage::getSingleton('core/session')->setData("foo","magento");
0

Другие решения

Генерирует output как это, потому что вы взяли только Французский в switch.So каждый раз, когда он получает это case только. Что вы можете сделать, это сделать массив этого языка и после этого использовать его в switch как это:

    $currentUrl = 'this is current page url';
$store_code = array('french', 'german', 'mandarin');
foreach($store_code as $mylang){
switch ($mylang) {
case 'french':
$_baseurl = $currentUrl."?lang=fr";

echo "<script type='text/javascript'>window.location='{$_baseurl}'</script>";
break;
case 'german':
$_baseurl = $currentUrl."?lang=de";
echo "<script type='text/javascript'>window.location='{$_baseurl}'</script>";
break;
case 'mandarin':
$_baseurl = $currentUrl."?lang=zh";
echo "<script type='text/javascript'>window.location='{$_baseurl}'</script>";
break;
default:
$_baseurl = $currentUrl;
echo "<script type='text/javascript'>window.location='{$_baseurl}'</script>";
break;
}
}

Пожалуйста, дайте мне знать результат здесь.

-1

По вопросам рекламы [email protected]