这可以通过cookie完成
我们使用Javascript进行设置,重新加载页面,并使用其值在PHP中显示不同的菜单。
首先,在站点页脚处打印脚本(请参见注释)<注意:最好将其与主题脚本一起排队
add_action( \'wp_footer\', \'wpse_77220_language_cookie\' );
/**
* Cookie script based on http://github.com/bainternet/Admin-Page-Class
*/
function wpse_77220_language_cookie()
{
echo \'<script>
/* Set Cookie */
function setCookie( name,value,days )
{
if (days)
{
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
/* Get Cookie - not used in this example */
function getCookie( name )
{
var nameEQ = name + "=";
var ca = document.cookie.split(";");
for(var i=0;i < ca.length;i++)
{
var c = ca[i];
while (c.charAt(0)==\\\' \\\') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
/* Erase Cookie - not used in this example */
function eraseCookie(name) { setCookie(name,"",-1); }
// Bind click on language menu action to show the nav menu.
jQuery(document).ready(function()
{
jQuery(".lingo").bind("click", function(event)
{
setCookie( "user_lingo", jQuery(this).attr("id") );
});
});
</script>
\';
}
如果主题中未包含jQuery:
add_action( \'wp_enqueue_scripts\', \'wpse_77220_enqueue_jquery\' );
function wpse_77220_enqueue_jquery() {
wp_enqueue_script( \'jquery\' );
}
然后,在主题中
header.php
, 我们这样说:
</head>
<?php
if( isset( $_COOKIE[\'user_lingo\'] ) ) {
$user_lingo = $_COOKIE[\'user_lingo\'];
} else {
$user_lingo = \'en\';
}
?>
<body <?php body_class(); ?>>
然后
wp_nav_menu
:
<?php wp_nav_menu( array( \'menu\' => $user_lingo ) ); ?>
在本例中,导航菜单与我们将为cookie设置的值具有相同的名称。如果菜单有其他名称,则必须调整标题条件
$user_lingo
.
最后是语言菜单。班级lingo
通过jQuery绑定以使用锚设置cookie值id
\'s、 Thehref
值强制重新加载页面,如果愿意,可以使用其他方法。
<a href="?lang=pt" id="pt" class="lingo">pt</a> |
<a href="?lang=es" id="es" class="lingo">es</a> |
<a href="?lang=en" id="en" class="lingo">en</a>