Rewriting every url

时间:2011-10-07 作者:Michiel Standaert

我有一个关于永久链接和重写url的问题。我正在编写一个翻译插件,我想在我的url中添加语言快捷码(类似http://eyewebz.com/EN/other_permalinks). 目前,我正在分配一个$\\u Session-variable来保存当前选定的语言,但这对用户来说并不是真正可见的。

我可以用下面的代码重写url,但更改url后,页面不会显示任何内容,全局$post变量完全为空。代码如下。

function alter_link_language($permalink)
{
    $active_language = get_user_selected_language();
    $current_language_shortcode = strtoupper( $active_language["shortname"] );

    $permalink = str_replace(get_bloginfo(\'home\'), \'\', $permalink);
    return get_bloginfo(\'home\') . \'/\' . $current_language_shortcode . $permalink;
}
add_filter(\'post_link\', \'alter_link_language\', 10);
add_filter(\'page_link\', \'alter_link_language\', 10);
如果有人能在wy的路上帮我做这件事,我将不胜感激!

提前感谢!

1 个回复
最合适的回答,由SO网友:Brian Fegter 整理而成

我知道,没有一种好的方法可以预先编写一个带有URI基的永久链接,同时让WordPress满意。但是,您可以使用将语言添加到URI的末尾add_rewrite_endpoint();

add_action(\'init\', \'foobar_rewrite_tag\');
function foobar_rewrite_tag(){
     $languages = array(\'en\', \'sp\'); // Probably have this sourced from your plugin options
     foreach($languages as $language)
         add_rewrite_endpoint( $language, EP_PERMALINK | EP_PAGES);
}
您可以在模板中使用如下简单的getter函数:

function get_language_code(){
    global $wp_query;
    $languages = array(\'en\', \'sp\'); //Source this from your plugin options
    foreach($languages as $language)
        if(isset($wp_query->query_vars[$language])) //Note this will not have a value assigned, so we check if it\'s set to determine the language
             return $language;
}
您的永久链接如下所示:

  1. http://domain.com/page-name/en
  2. http://domain.com/page-name/sp

    参考号:http://codex.wordpress.org/Rewrite_API/add_rewrite_endpoint

结束

相关推荐

All in One Seo and Permalinks

我正在使用多功能搜索引擎优化,对于帖子标题格式选项,我将其作为:%post\\u标题%kewyord1关键字2等关键字1,关键字2是我为我的网站选择的关键字此外,在Permalinks中,我将其命名为/%postname%/,以便帖子名称显示在短链接/url中因此,使用这些配置,如果我在标题中使用“Books”进行发布,它将如下所示:Books关键字1关键字2等但该帖子的短链接或实际url如下所示:www.mydomain。com/书籍它不包含我在搜索引擎优化中指定的所有关键字我试着将Permalink更