web-dev-qa-db-fra.com

Stratégie de gestion des pages hiérarchiques avec un contenu parent vide

Supposons que j'ai la structure de page suivante

/about-us (used as a parent holder only)
/about-us/history (real page)
/about-us/team (real page)
/about-us/industry (real page)

Il n'y a pas de contenu dans la page " à propos de nous ", mais c'est nécessaire pour deux raisons

  1. Autoriser la structure hiérarchique dans l'URL
  2. Autoriser la structure hiérarchique dans le menu

Mais l’un des problèmes est que lorsque l’utilisateur tape "/about-us ", il entrera dans une page vierge sans contenu.

Donc, devrais-je transférer automatiquement l'utilisateur à l'url dire "/à propos de nous/historique " par défaut?

Ou est-ce la manière habituelle de gérer les pages hiérarchiques?

3
Yoga

J'utilise deux stratégies ici ...

1) est une simple redirection vers le premier enfant (en utilisant l'ordre du menu) page-redirect.php

<?php
/*
 * Template Name: Redirector
 * Description: Empty Holder (redirect page) 
 */


    $rp = new WP_Query(array(
        'post_parent'   => get_the_id(),
        'post_type'     => 'page',
        'order'         => 'asc',
        'orderby'       => 'menu_order'
    ));

    if ($rp->have_posts())
        while ( $rp->have_posts() ) { 
            $rp->the_post(); 
            wp_redirect(get_permalink(get_the_id()));
            exit;
        }   
    wp_redirect(dirname(home_url($wp->request)));
    exit;

2) générer un menu sur un parent avec un lien vers les enfants (par exemple - http://unu.edu/about )

4
Butuzov

Créez un nouveau fichier appelé page-parent.php et entrez le code suivant dans votre nouveau fichier:

<?php
/*
 * Template Name: Parent Menu
 * Description: Redirects empty parent page to first child page
 */

# Parent menu goes to first child page
# askwpgirl.com/redirect-parent-page-first-child-page-wordpress
$child_page = get_pages( "child_of=" . $post->ID . "&sort_column=menu_order" );
if ( $child_page ) {
    $parent_page = $child_page[0];
    wp_redirect( get_permalink( $parent_page->ID ) );
}

Ensuite, placez le page-parent.php dans le répertoire racine de votre thème enfant, par exemple:

/wp-content/themes/child-theme

Ensuite, vous verrez le nouveau modèle Parent Menu dans l’option Template .

Enregistrez le menu parent avec le nouveau modèle et, chaque fois que vous tenterez d’accéder directement à la page parent, il sera redirigé vers la première page enfant.

0