web-dev-qa-db-fra.com

get_pages () & "child_of"

Je regarde un didacticiel WordPress sur Youtube sur get_pages () et "child_of":

(de 17'28 "à 18'35") https://www.youtube.com/watch?v=GHTZn3atTcM

Pour vérifier avec une page a enfant (s) ou non, il a suggéré d'utiliser get_pages () avec "child_of" pour le vérifier. J'ai donc créé la structure de catégorie suivante:

About Us

- Sub about us // child of about us

Contact Us // with no child(ren)

Il y a 1 poste pour chaque catégorie.

Et puis je mets ce qui suit dans le single.php pour vérifier:

$array = get_pages('child_of=' . $post->ID);

echo count($array);

Supposons que "About Us" devrait retourner 1 car il a un enfant.

Tandis que pour "Sub about about us" et "Contact Us", le résultat devrait être 0, car les deux enfants n’ont pas d’enfant.

Mais à la fin, tous retournent 0, puis-je savoir ce que je fais mal?

Est-ce que je comprends mal comment utiliser get_pages () & "child_of"?

Merci beaucoup!

1
Kenny

Vous l'utilisez au mauvais endroit. Vous pouvez utiliser la même fonction dans page.php et si vous souhaitez l'utiliser dans single.php, vous devez alors passer à pageId statique en tant que paramètres.

À l’heure actuelle, vous transmettez $post->ID qui renverra l’identifiant post de l’article en cours et Articles n’ayant aucune relation avec les pages.

 $defaults = array(
    'depth'        => 0,
    'show_date'    => '',
    'date_format'  => get_option( 'date_format' ),
    'child_of'     => 0,
    'exclude'      => '',
    'title_li'     => __( 'Pages' ),
    'echo'         => 1,
    'authors'      => '',
    'sort_column'  => 'menu_order, post_title',
    'link_before'  => '',
    'link_after'   => '',
    'item_spacing' => 'preserve',
    'walker'       => '',
);

$r = wp_parse_args( $args, $defaults );

Le code ci-dessus renverra toutes les pages. Maintenant, si vous voulez avoir des enfants à propos de nous, passez PageID à propos de nous dans le paramètre 'child_of' => 0. Il retournera seul enfant de à propos de nous.

Une autre chose, vous pouvez obtenir des pages enfants de la page en cours en utilisant la fonction suivante.

$mypages = get_pages( array( 'child_of' => $post->ID, 'sort_column' => 'post_date', 'sort_order' => 'desc' ) );

Ici vous devez écrire ce code dans page.php ou n’importe quel modèle de page, il retournera les pages enfants de la page actuelle.

Faites-moi savoir si vous trouvez un problème.

0
Sudhir Tiwari