2012-02-20 3 views
0

Я создал сайт, на котором есть 2 WordPress, один для английского языка и один для ирландского языка. Они идентичны с теми же категориями, названиями страниц и т. Д.Изменение ссылки WordPress в заголовке

У меня есть английский язык | Ирландские ссылки в моем заголовке на каждой странице.

Когда вы находитесь на странице на английском языке, и вы нажимаете ссылку «irish» наверху, я бы хотел, чтобы вы отправили вас на ту же страницу, но на ирландском сайте.

Структуры ссылки приведен ниже:

http://mysite.com/english/about

http://mysite.com/irish/about

Так что я на самом деле нужен только 'английский' в URL, чтобы заменить 'ирландский'

ответ

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; 
+0

Плюс 1 за трудность написания конкретного кода. –

+0

Собственно, одно небольшое изменение. Вам нужно будет добавить остальную часть пути в конец $ newURL, так как «я бы хотел, чтобы он перенес вас на ту же страницу, но на ирландский сайт». Я пишу немного обновления для своего, где я это делаю. –

+0

Я уже сделал это в части elseif ($ key> "1") { $ newUrl. = "/". $ Часть; Если вы запустите код, вы увидите, что он уже делает это – Daan

0

Вы используете локализация - см. 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

Смежные вопросы