- Estado
- Resuelto
- Notificado para
- WPML Multilingual CMS 3.1.9.5
- Resuelto en
- 3.2
Resumen del problema
Cuando una o más páginas padre tienen diferentes páginas hijas con el mismo slug, al abrir una de las hijas se redirige a la página equivocada.
Reutilizar un slug en páginas hijas parece causar una redirección incorrecta en el front-end.
Ejemplo:
- Página A
- child-aa
- child-ab
- Página B
- child-aa (página única, pero con el mismo slug que 1.1)
- child-bb
Solución alternativa
El problema se solucionará en WPML 3.2.
Mientras tanto, puede usar la siguiente solución alternativa.
Tenga en cuenta que esto solo funciona con slugs secundarios duplicados, siempre y cuando las páginas superiores no usen el mismo nombre que las secundarias.
- Haga una copia de seguridad completa de su sitio web. Si es posible, pruebe esto primero en una copia de su sitio web que no esté en producción.
- Abra
sitepress.class.php - Vaya a la línea 7804: solo debería contener
// Adjust page name - Reemplace este bloque de código (líneas de la 7804 a la 7828:
// Adjust page name if ( isset( $q->query_vars[ 'pagename' ] ) && !empty( $q->query_vars[ 'pagename' ] ) ) { // find the page with the page name in the current language. $pagename = explode ( '/', $q->query_vars[ 'pagename' ] ); $pagename = array_pop ( $pagename ); $pid = $wpdb->get_var( $wpdb->prepare( " SELECT ID FROM $wpdb->posts p JOIN {$wpdb->prefix}icl_translations t ON p.ID = t.element_id AND t.element_type='post_page' WHERE p.post_name=%s AND t.language_code = %s ", $pagename, $current_language ) ); if ( $pid ) { $q->query_vars[ 'page_id' ] = $pid; // We have found the page id unset( $q->query_vars[ 'pagename' ] ); if ( $q->query_vars[ 'page_id' ] == get_option( 'page_for_posts' ) ) { // it's the blog page. $q->is_page = false; // $wp_query->is_page = false; $q->is_home = true; // $wp_query->is_home = true; $q->is_posts_page = true; // $wp_query->is_posts_page = true; } } }
Por ese bloque:// Adjust page name if ( isset( $q->query_vars[ 'pagename' ] ) && !empty( $q->query_vars[ 'pagename' ] ) ) { // find the page with the page name in the current language. $pid = $wpdb->get_var( $wpdb->prepare( " SELECT ID FROM $wpdb->posts p JOIN {$wpdb->prefix}icl_translations t ON p.ID = t.element_id AND element_type='post_page' WHERE p.post_name=%s AND t.language_code = %s ", $q->query_vars[ 'pagename' ], $current_language ) ); if ( $pid ) { $q->query_vars[ 'page_id' ] = $pid; // We have found the page id unset( $q->query_vars[ 'pagename' ] ); if ( $q->query_vars[ 'page_id' ] == get_option( 'page_for_posts' ) ) { // it's the blog page. $q->is_page = false; // $wp_query->is_page = false; $q->is_home = true; // $wp_query->is_home = true; $q->is_posts_page = true; // $wp_query->is_posts_page = true; } } } - Guardar
- Recargue el sitio web