我目前正在一个WordPress的网站,需要有法国提供的选项。我找到了一种方法来使主题与fr_FR po和mo文件一起工作,当我添加查询字符串变量l
。即如何让WordPress的永久链接忽略自定义URL重写
site.tld
将产生香草的英文网站,而site.tld/?l=fr
将在我的functions.php激活下面的代码,以服务法语翻译:
<?php
// http://codex.wordpress.org/Plugin_API/Filter_Reference/locale
add_filter('locale', 'set_my_locale');
function set_my_locale($lang) {
if ("fr" == substr(strtolower(trim(strip_tags(stripslashes($_GET['l'])))), 0, 2)) {
// set language to french
return "fr_FR";
} else {
// return original locale
return $lang;
}
}
?>
这个设置已经工作。我的问题是:我如何重写网址,而不是site.tld/?l=fr
我可以预先安装fr
的文件夹结构,即site.tld/fr/
?
所以如果有英文的页面site.tld/portoflio/autumn/
,site.tld/fr/portfolio/autumn/
会吐出法文。我从苹果网站得到了这个想法,其中语言总是在文件夹结构前面。
我已经可以做到这一点,在htaccess的外部重定向:
RewriteBase/
RewriteCond ^[a-z]{2}/
RewriteRule ^([a-z]{2})/(.*)$ /$2?l=$1 [R,L]
这个工程,但一旦我删除R
标志它所服务的法国翻译找不到404 isntead。我猜我所做的是与wordpress的重写规则搞混了,因为我需要使用漂亮的固定链接。现在我在管理员常规选项中设置为使用Month and name
(/%year%/%monthnum%/%postname%/
)。
我的问题是,我如何让wordpress忽略/fr/
部分,仍然提供正确的页面/帖子/ etc?
这甚至有可能吗?我在正确的轨道上吗?我需要你的帮助,尤其是做WISE,而不仅仅是NICE。我试过这个http://pmg.co/a-mostly-complete-guide-to-the-wordpress-rewrite-api,但对于我的生活,我不能让它工作。 :/
UPDATE:好了,所以这里的一些进展,采取线索,从@relu如下:
我确信我的规则是从.htaccess
罐头然后,我添加的规则从@因为Relu总是把我送到同一个地址而没有/fr
:
<?
// http://pmg.co/custom-wordpress-shortlinks
add_action('init', 'pmgtut_add_rewrites');
function pmgtut_add_rewrites() {
add_rewrite_rule('^([a-z]{2})/?$', 'index.php?l=$matches[1]', 'top');
add_rewrite_rule('^([a-z]{2})/(.*)$', 'index.php?l=$matches[1]&q=$matches[2]', 'top');
}
add_filter('query_vars', 'pmgtut_query_vars', 10, 1);
function pmgtut_query_vars($vars) {
$vars[] = 'l';
return $vars;
}
?>
现在/fr
停留在地址栏,所以这是一件好事,但有两个问题依然存在:
WordPress是服务我的主索引页。似乎它不使用规则的
&q=$matches[2]
部分;和语言环境仍然没有得到适当的设置。我检查了变量
l
是否得到了喂养,所以我在$l = get_query_var('l');
之后加了echo 'l: $l';
,有趣的是我得到了两个回声:一个l:
和另一个l: fr
。locale
过滤器正在运行两次?看起来像是第一次没有看到queryvar的值,然后似乎第二次输出l:
,fr
已经在那里..在一天结束时,区域设置仍然不会改变。
aaaah help。
最后更新:在我沮丧的最后一口气我再次搜索,发现这个插件qtranslate。做我所需要的。谢谢你们,尤其是@ relu的史诗般的努力,还有stayin pow'r。
哇对不起,我刚刚看到这个。谢谢!!好吧,所以当我添加这些,他们只是带我回到没有'/ fr'的链接嗯..任何想法? am clueless atm – 2012-03-18 11:40:03
您是否从.htaccess中删除了这些规则?他们不需要! – relu 2012-03-18 16:31:42
yeap,这样做..我也确保只有WordPress的rwrules在那里..当我得到它的工作时,会让你知道尽快。同时让我们知道如果还有其他事情我们可以做。非常感谢,'让它变得好人! – 2012-03-19 06:30:59