Создание пользовательской структуры постоянных ссылок для языков

9

Я написал простую многоязычную систему, при которой нажатие на значок флага устанавливает однолетнее печенье, содержащее двухбуквенный код языка (например, nl, de и т. Д.).

Я вклиниться в wpдействие , чтобы прочитать значение куков, а затем использовать the_titleи the_contentфильтры , чтобы показать правильный язык (различные языки вводятся через метабоксы на странице после экрана / редактирования).

Все это прекрасно работает, за исключением того, что я также хотел бы иметь постоянные ссылки для каждой языковой версии, при этом двухбуквенный код языка находится между доменным именем и обычной структурой постоянных ссылок. Я использую %postname%структуру постоянных ссылок, поэтому все следующее будет правильным:

http://example.com/nl/about-us
http://example.com/de
http://example.com/fr/2012/03
http://example.com/es/this-is-a-post-title

Если текущим языком является английский, то не следует использовать двухбуквенный код (это будет обычная постоянная ссылка).

До сих пор я использовал query_varsфильтр для добавления запроса var lang, но я пока не уверен, каковы будут следующие шаги. Любой совет высоко ценится!

Саймон Блэкборн
источник
1
спасибо @ l2aelba, этот ответ достаточно близок к тому, что мне нужно, с некоторыми незначительными изменениями.
Саймон Блэкборн
У вас есть субдомены для этого или только один сайт
kennethjfalbous
просто один сайт
Саймон Блэкборн

Ответы:

1

Ваш вопрос достаточно сложен, чтобы ответить самому, но я бы посоветовал вам установить qTranslateплагин. Как сказано в описании плагина:

Выберите один из 3 режимов, чтобы сделать ваши URL красивыми и оптимизированными для SEO. - везде совместимый? Lang = en, простой и красивый / en / foo / или красивый и аккуратный en.yoursite.com

Таким образом, вы можете попытаться проверить код плагина и посмотреть, как они это делают, или просто использовать его вообще.

Евгений Мануйлов
источник
1
спасибо за ссылку, я посмотрю, смогу ли я разобрать код.
Саймон Блэкборн
-1

Это фильтр, который я использую:

function em_wpml_dbem_taxonomy_category_slug($option){
$lang = get_bloginfo('language');

if( $lang === 'es-ES' ){
    $option = 'eventos/categorias';
} else {
    $option = 'events/categories';
}
return $option;
}
add_filter('pre_option_dbem_taxonomy_category_slug', 'em_wpml_dbem_taxonomy_category_slug');
jim.duck
источник
2
Пожалуйста, добавьте объяснение к вашему ответу - спасибо.
Николай