在URL中包括语言变量

时间:2015-07-06 作者:Michiel Standaert

我一直在为wordpress开发一个完全有效的语言插件。现在唯一缺少的是url重写。我一直在查看许多有关stackoverflow的网站、来源和其他问题,但我似乎无法让我的永久链接发挥作用。

我可以添加如下查询字符串变量:

public function append_query_string($url) 
{
    $args = array(\'lang\' => $this->get_locale());
    return add_query_arg($args, $url);
}
add_filter(\'page_link\', array($this, \'append_query_string\'));
add_filter(\'post_link\', array($this, \'append_query_string\'));
add_filter(\'the_permalink\', array($this, \'append_query_string\'));
这会将我的链接更改为http://www.mylink.com?lang=en_us 例如我现在想要的是添加一个permastruct,这样用户就可以拥有漂亮的url(例如。http://www.mylink.com/en/)

我添加了以下代码:

public function add_query_var($vars)
{
    $vars[\'lang\'] = $this->get_locale();
    return $vars;
}
add_filter(\'request\' , array($this, \'add_query_var\'), 10, 2 );

public function custom_permastruct() 
{
    add_permastruct(\'language\', \'%lang%\', false);
}
add_action(\'wp_loaded\', array($this, \'custom_permastruct\'));
我想我现在唯一需要的是重写规则,但我可能完全错了。谁知道添加这种磁导率的最佳解决方案是什么?

1 个回复
SO网友:Rares P.

在您的示例中

更改此项:

public function custom_permastruct() 
{
    add_permastruct(\'language\', \'%lang%\', false);
}
对此:

public function custom_permastruct() 
{
    add_rewrite_tag(\'%lang%\',\'(lang)s\',\'post_type=\');
    add_permastruct(\'language\', \'%lang%\', false);
}
Please note that this will only work on WordPress 3.4+

其他方法:

您需要创建一个新的永久链接,然后再设置一些重写规则。函数add\\u permastruct是一个很好的开始。您可以在这里找到一个很好的示例:http://shibashake.com/wordpress-theme/wordpress-permalink-add 还有这里:https://code.tutsplus.com/articles/the-rewrite-api-post-types-taxonomies--wp-25488

这是一个媒体库示例,但您可以对语言模块使用相同的功能。

结束

相关推荐

How to replace permalinks

我已将wordpress项目导出并导入live server。现在的问题是,我将permalink结构作为“localhost”格式。当我单击网站中的任何链接时,它会将我重定向到localhost。我怎样才能改变这一点?我的htaccess文件如下所示<IfModule mod_rewrite.c> RewriteEngine On RewriteBase /myproject/ RewriteRule ^index\\.php$ - [L] RewriteCo