Reescreva url para o tipo de postagem personalizado

4

Estou usando o plug-in WPML para traduzir meu site. Eu tenho um tipo de post personalizado chamado "vinos" e eu uso este args:

$args = array( 
            'labels' => $labels,
            'hierarchical' => false,
            'supports' => array('title', 'thumbnail'),
            'public' => true,
            'show_ui' => true,
            'show_in_menu' => true,
            'menu_position' => 6,
            'show_in_nav_menus' => true,
            'publicly_queryable' => true,
            'exclude_from_search' => false,
            'has_archive' => 'nuestros-vinos/catalogo',
            'query_var' => true,
            'can_export' => true,
            'capability_type' => 'post',
            'rewrite' => array('slug' => 'nuestros-vinos/catalogo/marcas/%marcas%')
    );
    register_post_type('vinos', $args);

O problema é que não consigo traduzir minha string "nuestros-vinos / catalogo / marcas" para o inglês e, por essa razão, meus URLs são:

www.domain.com/nuestros-vinos/catalogo/ --------- > mostrar toda minha lista de vinhos em espanhol www.domain.com/en/nuestros-vinos/catalogo/ ------ > mostre toda minha lista de vinhos em inglês

mas eu gostaria que na versão em inglês, o URL fosse:

www.domain.com/en/our-wines/catalog /

Estou tentando usar regras de reescrita:

add_filter('generate_rewrite_rules', 'customposttype_rewrites');
function customposttype_rewrites($wp_rewrite) {
    $newrules = array();
    $newrules['en/our-wines/catalog/?$'] = 'en/index.php?post_type=vinos';
    $wp_rewrite->rules = $newrules + $wp_rewrite->rules;
}

Mas isso não funciona, sempre página não encontrada.

Como posso fazer isso?

Obrigado.

    
por Mike 14.06.2013 / 12:44

2 respostas

1

isso não funcionará:

'en/index.php?post_type=vinos'

não há en/index.php , tem que ser:

'index.php?post_type=vinos'

se você precisar detectar en no caminho, adicione uma consulta var e defina essa consulta var em sua reescrita:

function wpa_query_vars( $qvars ) {
    $qvars[] = 'wpa_lang';
    return $qvars;
}
add_filter( 'query_vars', 'wpa_query_vars' );

depois, na sua regra de reescrita:

$newrules['en/our-wines/catalog/?$'] = 'index.php?post_type=vinos&wpa_lang=en';
    
por Milo 14.06.2013 / 18:30
0

Experimente a solução mencionada aqui: enlace o que basicamente implica em salvar novamente suas configurações de permalink novamente.

Exemplo: definir permalinks para a estrutura padrão, salve. Mude para a estrutura de permalink desejada, salve novamente e verifique novamente se o problema de permalink de postagem personalizado persistir.

Já tive problemas com o 404 com permalinks de postagem personalizados e a solução mencionada acima funcionou para mim.

Edit: Além disso, esperamos que você não tenha ativado nenhum plug-in de cache enquanto estiver codificando, apenas esqueci de mencionar isso.

    
por user25195 14.06.2013 / 18:19