Dans le cadre d’un projet sur WordPress, mon client avait l’idée de faire un site qui se compose en deux arborescences bien distinctes :

  • Professionnel
  • Particulier

Quand nous sommes sur la partie professionnelle, la page d’accueil ainsi que le menu devait être câblée pour les professionnels.

Pour cela, j’ai dû trouver une petite fonction permettant de retourner l’ID de la page la plus haute dans l’arborescence pour savoir si l’on était sur particulier ou professionnel.

Mise en place

J’ai donc rajouté dans le fichier function.php du thème (/wp-content/themes/xxxx/function.php)

function isPro() {
    global $post;
    
    if ($post->post_parent) {
        $ancestror = get_post_ancestors( $post->ID );
        $root      = count( $ancestror ) - 1;
        $parent    = $ancestror[ $root ];
    } else {
        $parent = $post->ID;
    }
    
    return $parent;
}

Une autre alternative est de vérifier le slug de la page au lieu de l’ID et d’ajouter la classe au <body> pour y appliquer un style particulier.

function isPro() {
    global $post;
    
    if ($post->post_parent) {
        $ancestror = get_post_ancestors( $post->ID );
        $root      = count( $ancestror ) - 1;
        $parent    = $ancestror[ $root ];
        $slug      = get_post_field( 'post_name', $parent );

        if($slug === "professionel") {
          add_filter( 'body_class', function( $classes ) {
           return array_merge( $classes, array( 'is-pro' ) );
          } );
        }
    }
}

Articles reliés

Retrouvez ci-dessous quelques articles qui pourraient vous intéresser.

11
jui
Activer le mode maintenance de WordPress sans plugin

Activer le mode maintenance de WordPress sans plugin

Nous allons voir comment mettre son site WordPress en maintenance directement depuis le FTP et sans utiliser des plugins. Je vois beaucoup de monde
Lire la suite
16
nov
Charger Contact Form 7 uniquement sur certaines pages

Charger Contact Form 7 uniquement sur certaines pages

Comment ne plus charger le Javascript et le style CSS de Contact Form 7 sur toutes les pages WordPress mais uniquement sur certaines
Lire la suite