wordpress - WordPress:在url中包含语言变量

标签 wordpress url-rewriting permalinks

我一直在为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。我现在想要的是添加一个永久结构,以便用户可以拥有漂亮的网址(例如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'));


我想,我现在唯一需要的就是重写规则,但是我可能完全错了。有谁知道添加这种永久结构的最佳解决方案是什么?

编辑
我一直在努力使它工作一个月,而且我似乎无法掌握固定链接,甚至没有以前所有的答案和我自己的研究。因此,这就是为什么我再次悬赏这篇文章。我需要什么:我有一个返回语言代码的函数(get_locale)。此语言代码应在我的URL中实现,如下所示:"http://www.mywebsite.com/LANGUAGE_HERE/..."

我知道我需要为此注册自己的永久链接结构,但这就是所有错误的地方。我需要什么过滤器,我应该在过滤器功能中放什么?非常感谢您的帮助,因为我在这里变得非常绝望。

编辑2

因此,我添加了重写规则,但它们似乎也不起作用。我在这里有点绝望。无论如何,这是重写规则的代码:

public function add_rewrite_rules()
{   
    $languages = $this->get_all_languages();
    foreach($languages as $language) {
        add_rewrite_rule('^' . $language->code . '/([^/]*)/?$', 'index.php?lang=$matches[1]', 'top');
    }
}
add_action('init', array($this, 'add_rewrite_rules'));

最佳答案

正确设置的Wordpress 2.0+会将所有请求重定向到/index.php,因此不需要任何htaccess更新,并且您注册的perma-struct看起来还不错。我认为剩下的只是使用自定义结构的configuring wordpress to use your %lang struct了,您应该一切顺利

关于wordpress - WordPress:在url中包含语言变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31245556/

相关文章:

用于 Codeigniter(或其他框架)的 Wordpress 身份验证库

wordpress - Plesk 从转储中恢复

php - 网址缩短网站

.htaccess - 如何写入 htaccess 文件

ruby - 在 Jekyll 中获得这个 'custom' 永久链接方案的步骤是什么?

mod-rewrite - 我可以在 url 中使用下划线而不是连字符吗?

php - 在 wordpress 页面的选择标签中显示查询结果?

Javascript 幻灯片无法在多个页面上运行

php - 我们如何将看起来像 cakephp/pages/1 的 cakephp url 转换为 cakephp/about-us?