web-dev-qa-db-fra.com

Afficher le contenu si la page parent a des enfants

En utilisant cette partie de code, vous pouvez afficher du contenu, que ce soit une page enfant ou non:

<?php
global $post;

if ( is_page() && $post->post_parent ) : ?>
This is a child-page.

<?php else : ?>
This is a parent-page.

<?php endif; ?>

Mais j'aimerais ajouter une déclaration supplémentaire, de sorte que je puisse avoir un contenu différent s'il s'agit d'une page parent qui a un enfant ou d'une page parent qui n'en a pas. Est-ce que quelque chose comme ceci ci-dessous fonctionnerait? Si oui, que serait "XXX"?

<?php
global $post;

if ( is_page() && $post->post_parent ) : ?>
This is a child-page.

<?php elseif ( is_page() && XXX ) : ?>
This is a parent-page (with one or more children)

<?php else : ?>
This is a parent page without children.

<?php endif; ?>

Merci d'avance!

1
nicolas

J'ai fini par utiliser ce code:

<?php
global $post;
$children = get_pages( array( 'child_of' => $post->ID ) );

if ( is_page() && $post->post_parent ) : ?>
This is a child-page.

<?php elseif ( is_page() && count( $children ) > 0 ) : ?>
This is a parent-page (with one or more children)

<?php else : ?>
This is a parent page without children.

<?php endif; ?>
6
nicolas

Vous pouvez également créer votre propre balise conditionnelle. Dans functions.php add:

function my_is_parent() {
    global $post;

    $children = get_pages('child_of='.$post->ID);
    if( count( $children ) > 0 ) {
        $parent = true;
    }

    return $parent;
}

Et dans votre SI, au lieu de XXX, ajoutez: my_is_parent()

Vous pouvez bien sûr le nommer autrement que "my_is_parent" si vous le souhaitez. Pas sûr sur cette partie cependant, mais je suppose que ce n’est pas vraiment la preuve de fonctionnalité d’utiliser "is_parent" s’il est inclus dans le noyau un jour.

1
jzatt

vous pouvez y parvenir en utilisant

global $post;

$args = array (
    'parent' => $post->ID
);

$children = get_pages( $args );

if ( is_page() && $post->post_parent ) : ?>
This is a child-page.

<?php elseif ( is_page() && count( $children ) > 0 ) : ?>
This is a parent-page (with one or more children)

<?php else : ?>
This is a parent page without children.

<?php endif; ?>

et en utilisant count( $children ) > 0 au lieu de votre XXX

0
fischi