web-dev-qa-db-fra.com

Afficher les pages enfants de la page parent de type publication personnalisée

J'essaie d'afficher les pages enfants d'une page post_type personnalisée. J'ai trouvé un shortcode qui convient parfaitement aux "pages" post_type de WordPress standard, mais ne fonctionne pas pour les types de publication personnalisés.

Voici le code de shortcode que j'ai placé dans mon fichier de fonctions de substitution:

add_shortcode( 'my_childpages', 'my_list_child_pages' );  

function my_list_child_pages() { 
global $post;
if ( is_page() && $post->post_parent )
    $childpages = wp_list_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->post_parent . '&echo=0' );
else
    $childpages = wp_list_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->ID . '&echo=0' );
if ( $childpages ) {
    $string = '<ul>' . $childpages . '</ul>';
}
return $string; 
}

Si je place le shortcode [my_childpages] sur une "page" post_type avec enfants, il affiche avec succès dans la liste chaînée toutes les sous-pages. Mais si j'ajoute à un post_type personnalisé (par exemple, 'essais'), ce n'est pas le cas.

J'ai vu ailleurs que le code ne reconnaît peut-être pas le $post_type personnalisé et nécessite un argument supplémentaire, mais je ne sais pas comment éditer le code ci-dessus pour le satisfaire. J'ai essayé plusieurs modifications mais j'échoue.

Tout conseil ou suggestion serait grandement apprécié!

1
Benjamin Doyle

La page elle-même est un type de publication personnalisé; vous pouvez le remarquer lorsque vous ouvrez l'écran de la page de modification. Votre URL sera comme ça:

www.example.com/wp-admin/edit.php?post_type=page

Cela signifie que vous êtes sur un type de poste page.

En ce qui concerne votre code, la première condition de votre conditionnel détermine si vous êtes sur un type d'article page ou non. Dans la section else, vous pouvez également définir le post_type en tant qu'argument:

$childpages = wp_list_pages( 'post_type=essay&sort_column=menu_order&title_li=&child_of=' . $post->ID . '&echo=0' );

Cependant, vous devez définir la hiérarchie sur true lors de l'enregistrement de votre taxonomie personnalisée:

'hierarchical'=> true,

Jetez un oeil à cette question , qui contient des informations précieuses à ce sujet. La page associée de la référence code peut également être utile.

0
Jack Johansson