为语言创建自定义的永久链接结构


9

我编写了一个简单的多语言系统,其中单击一个标志图标可以设置一个包含两个字母语言代码(例如nl,de等)的一年cookie。

我加入了wp操作以读取Cookie值,然后使用the_titlethe_content过滤器显示正确的语言(通过页面/帖子编辑屏幕上的元框输入不同的语言)。

这一切都很好,除了我还希望每种语言版本都有一个永久链接,即两个字母的语言代码位于域名和通常的永久链接结构之间。我使用的是%postname%永久链接结构,因此以下所有内容均有效:

http://example.com/nl/about-us
http://example.com/de
http://example.com/fr/2012/03
http://example.com/es/this-is-a-post-title

如果当前语言是英语,则不应使用两个字母代码(它将是常规的永久链接)。

到目前为止,我已经使用query_vars过滤器添加了一个名为的查询变量lang,但这已经远远不够了,我不确定下一步是什么。任何建议,不胜感激!



1
谢谢@ l2aelba,这个答案已经足够接近我所需要的一些微小变化。
西蒙·布莱克本

您是否为此子网域或只有一个网站
kennethjfalbous 2014年

只是一个网站
Simon Blackbourn 2014年

Answers:


1

您的问题很复杂,无法由我自己回答,但是我建议您安装qTranslate插件。如插件的说明所述:

从3种模式中选择一种,使您的URL美观且对SEO友好。-随处兼容的?lang = zh_CN,简单美观/ en / foo /或简洁明了en.yoursite.com

因此,您可以尝试检查插件的代码,看看它们是如何做的,或者只是使用它。


1
感谢您的链接,我看一下是否可以解构代码。
西蒙·布莱克本

-1

这是我正在使用的过滤器:

function em_wpml_dbem_taxonomy_category_slug($option){
$lang = get_bloginfo('language');

if( $lang === 'es-ES' ){
    $option = 'eventos/categorias';
} else {
    $option = 'events/categories';
}
return $option;
}
add_filter('pre_option_dbem_taxonomy_category_slug', 'em_wpml_dbem_taxonomy_category_slug');

2
请在回答中添加解释-谢谢。
Nicolai 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.