【问题标题】:Changing WordPress link in header更改标题中的 WordPress 链接
【发布时间】:2012-02-20 10:19:18
【问题描述】:

我创建了一个网站,其中安装了 2 个 WordPress,一个用于英语,一个用于爱尔兰语。它们是相同的设置,具有相同的类别、页面名称等。

我有'英语 |每页标题中的爱尔兰语链接。

当您在英文页面上并单击顶部的“爱尔兰”链接时,我希望它将您带到同一页面,但在爱尔兰网站上。

链接结构如下图:

http://mysite.com/english/about

http://mysite.com/irish/about

所以我真的只需要将 url 中的 'english' 替换为 'irish'

【问题讨论】:

    标签: wordpress


    【解决方案1】:

    它们是为您处理多语言问题的标准 wordpress 插件。但是,如果您想留下来,请选择此脚本完全符合您的要求。

    $url = 'http://www.mysite.com/english/about/me/test';
    
    $parsedUrl = parse_url($url);
    $path_parts = explode("/",$parsedUrl[path]);
    
    $newUrl = $parsedUrl[scheme] . "://" . $parsedUrl[host];
    foreach($path_parts as $key =>$part){
        if($key == "1"){
            if($part == "english") $newUrl .= "/irish";
            else $newUrl .= "/english";
        } elseif($key > "1"){
            $newUrl .= "/" . $part;
        }
    }
    
    echo "Old: ". $url . "<br />New: " .$newUrl;
    

    【讨论】:

    • 加 1 来写具体的代码。
    • 其实一点点改变。您需要将路径的其余部分添加到 $newURL 的末尾,因为“我希望它带您到同一页面,但在爱尔兰站点上”。我正在为我正在执行此操作的地方写一些更新。
    • 我已经在 elseif($key > "1"){ $newUrl .= "/" 部分这样做了。 $部分;如果你运行代码,你会发现它已经这样做了
    • 无论如何我已经扩展了我的(因为我已经这样做了)。有两件事需要注意:1) 使用带默认值的 switch 应该可以捕获所有情况;2) 您可以使用 implode 消除 foreach(这可能提供可以忽略的性能差异)。
    • 啊!我讨厌你如何在 5 分钟后无法编辑 cmets!只是为了清楚我的第一点,我的意思是您可以为语言添加“n”个案例,并且仍然有一个默认选项(这比编写一堆 elsifs 稍微高效一些)。在这种情况下,只有 2 个案例,所以我们不在乎。
    【解决方案2】:

    您是否使用本地化 - 请参阅 http://codex.wordpress.org/I18n_for_WordPress_Developers 和 http://codex.wordpress.org/Multilingual_WordPress?如果是这样,请参阅http://codex.wordpress.org/Function_Reference/get_locale。您可以使用它来检测语言环境并相应地更新链接。如果您使用的是插件,则应查看插件文档。

    如果没有,您可以解析当前 URL 并分解路径,然后以这种方式更新链接 - http://php.net/manual/en/function.parse-url.php

    例子:

    <?php
    $url = 'http://www.domain-name.com/english/index.php/tag/my-tag';
    
    $path = parse_url($url);
    // split the path
    $parts = explode('/', $path[path]);
    //get the first item
    $tag = $parts[1];
    print "First path element: " . $tag . "\n";
    
    $newPath = "";
    //creating a default switch statement catches (the unlikely event of) unknown cases so our links don't break
    switch ($tag) {
        case "english":
            $newPath = "irish";
            break;
        default:
            $newPath = "english";
    }
    
    print "New path element to include: " . $newPath . "\n";
    
    //you could actually just use $parts, but I though this might be easier to read     
    $pathSuffix = $parts;
    
    unset($pathSuffix[0],$pathSuffix[1]);
    
    //now get the start of the url and construct a new url
    $newUrl = $path[scheme] . "://" . $path[host] . "/" . $newPath . "/"  . implode("/",$pathSuffix) . "\n";
    //full credit to the post below for the first bit ;)
    print "Old url: " . $url . "\n". "New url: " . $newUrl;
    ?>
    

    改编自http://www.codingforums.com/archive/index.php/t-186104.html

    【讨论】:

      猜你喜欢
      • 2023-03-19
      • 2017-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-03
      • 1970-01-01
      • 2017-08-06
      相关资源
      最近更新 更多