Criando estrutura de permalink personalizada para idiomas

9

Eu escrevi um sistema multilíngue simples, no qual clicar em um ícone de bandeira define um cookie de um ano contendo um código de idioma de duas letras (por exemplo, nl, de, etc).

Eu me conecto à wpação para ler o valor do cookie e, em seguida, uso os filtros the_titlee the_contentpara mostrar o idioma correto (os diferentes idiomas são inseridos por meio de metabox na tela de edição de página / publicação).

Isso tudo funciona muito bem, exceto que eu também gostaria de ter links permanentes para cada versão do idioma, em que o código do idioma de duas letras está entre o nome do domínio e a estrutura usual do link permanente. Estou usando a %postname%estrutura do permalink, para que todos os itens a seguir sejam válidos:

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

Se o idioma atual for o inglês, nenhum código de duas letras deve ser usado (será apenas o link permanente normal).

Até agora, usei o query_varsfiltro para adicionar uma consulta chamada var lang, mas, até agora, não tenho certeza quais são as próximas etapas. Algum conselho muito apreciado!

Simon Blackbourn
fonte
11
obrigado @ l2aelba, essa resposta está perto o suficiente do que eu preciso com algumas pequenas alterações.
Simon Blackbourn 27/03
Você tem subdomínios para este site ou apenas um único site
Kennethjfalbous
apenas um site
Simon Blackbourn

Respostas:

1

Sua pergunta é complicada o suficiente para responder sozinha, mas eu sugiro que você instale o qTranslateplugin. Como a descrição do plugin diz:

Escolha um dos três modos para deixar seus URLs bonitos e amigáveis ​​ao SEO. - O compatível em todos os lugares? Lang = pt, simples e bonito / pt / foo / ou agradável e arrumado pt.seu site.com

Assim, você pode tentar inspecionar o código do plug-in e ver como eles o fazem, ou simplesmente usá-lo.

Eugene Manuilov
fonte
11
obrigado pelo link, vou dar uma olhada para ver se consigo desconstruir o código.
Simon Blackbourn
-1

Este é o filtro que estou usando:

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
fonte
2
Por favor, adicione uma explicação à sua resposta - obrigado.
Nicolai