Reescriba la URL para el tipo de publicación personalizada

4

Estoy usando el complemento WPML para traducir mi sitio. Tengo un tipo de publicación personalizada llamada "vinos" y uso este argumento:

$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);

El problema es que no puedo traducir mi cadena "nuestros-vinos / catalogo / marcas" al inglés y, por ese motivo, mis direcciones URL son:

www.dominio.com/nuestros-vinos/catalogo/ --------- > mostrar toda mi lista de vinos en español www.dominio.com/en/nuestros-vinos/catalogo/ ------ > mostrar toda mi lista de vinos en inglés

pero me gustaría que en la versión en inglés, la url fuera:

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

Estoy intentando usar reglas de reescritura:

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;
}

Pero no funciona, siempre no se encuentra la página.

¿Cómo puedo hacerlo?

Gracias.

    
pregunta Mike 14.06.2013 - 12:44

2 respuestas

1

esto no funcionará:

'en/index.php?post_type=vinos'

no hay en/index.php , tiene que ser:

'index.php?post_type=vinos'

si necesita detectar en en la ruta, agregue una var de consulta, luego configure esa var de consulta en su reescritura:

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

luego en tu regla de reescritura:

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

Prueba la solución mencionada aquí: enlace que básicamente implica volver a guardar la configuración del enlace permanente una vez más.

Ejemplo: establezca los enlaces permanentes a la estructura predeterminada, guardar. Cambie a la estructura de enlace permanente que desee, vuelva a guardar y luego vuelva a verificar si el problema de publicación permanente del enlace permanente persiste.

He tenido 404 problemas en el pasado con los enlaces permanentes de correos personalizados y la solución mencionada anteriormente funcionó para mí.

Editar: Además, es de esperar que no hayas habilitado ningún complemento de almacenamiento en caché mientras estás codificando, simplemente olvidaste mencionar esto.

    
respondido por el user25195 14.06.2013 - 18:19

Lea otras preguntas en las etiquetas