Eliminando páginas jerárquicas en el permalink

4

Tengo varias páginas configuradas en una jerarquía en mi sitio. Actualmente, las páginas y las URL del sitio tienen este aspecto.

Page name        | Current URL           | Preferred URL 
-----------------|----------------------------------------
Page AAA         | /pageAAA/             | /pageAAA/
|-- Page BBB     | /pageAAA/pageBBB/     | /pageBBB/
Page CCC         | /pageCCC/             | /pageCCC/
Page DDD         | /pageDDD/             | /pageDDD/
|-- Page EEE     | /pageDDD/pageEEE/     | /pageEEE/

Me gustaría quitar la jerarquía de páginas de la URL y usar el nombre de la página. Actualmente, esto no es un problema para los "POSTS", ya que he establecido el "Enlace permanente" en /%postname%/

Editar: La razón por la que quiero hacer esto es; Estoy importando un sitio existente en WordPress. El sitio existente tiene una jerarquía para las páginas (menú) pero una estructura de url plana. No sé si esto tiene algún beneficio adicional para SEO, pero quiero mantener la estructura de URL igual que en el sitio anterior

    
pregunta Steven smethurst 21.03.2013 - 19:14

2 respuestas

1

Me gustaría saber si alguien puede encontrar una solución mejor para esto. Esto es lo que se me ocurrió:

function wpse_91821_flatten_page_paths( $wp ) {
    if ( false !== strpos( $wp->matched_query, 'pagename=' ) && isset( $wp->query_vars['pagename'] ) && $wp->query_vars['pagename'] && false === strpos( $wp->query_vars['pagename'], '/' ) ) {
        if ( !get_page_by_path( $wp->query_vars['pagename'] ) ) {
            $page = get_posts( array(
                'name'        => $wp->query_vars['pagename'],
                'post_type'   => 'page',
                'post_status' => 'publish',
                'numberposts' => 1
            ) );
            if ( $page && isset( $page[0] ) ) {
                $wp->query_vars['pagename'] = get_page_uri( $page[0]->ID );
                $wp->request = $wp->query_vars['pagename'];
            }
        }
    }
}
add_action( 'parse_request', 'wpse_91821_flatten_page_paths', 5 );

Lo que estoy haciendo aquí es interceptar parse_request y si es una solicitud de nombre de página, y la página no tiene una "/", entonces verifico si puedo encontrar una publicación con el nombre correcto . Si encuentro una página, establezco la var. De consulta, que permite que el resto de la cadena de solicitudes proceda normalmente, porque WordPress piensa que la solicitud es la jerárquica completa.

También te gustaría agregar un filtro a post_type_link para que tus enlaces se generen correctamente (de lo contrario, seguirán siendo jerárquicos).

    
respondido por el Matthew Boynes 23.05.2013 - 21:17
0

No cambiaría el comportamiento del enlace permanente de la página. Una solución mucho más simple / segura será establecer una jerarquía de páginas planas (si realmente quieres que sea plana).

Si desea tener una jerarquía en el menú, aún puede tenerla: puede crear un menú personalizado y mostrarlo con la función wp_nav_menu .

    
respondido por el Krzysiek Dróżdż 20.06.2013 - 22:21

Lea otras preguntas en las etiquetas