WP Query pentru a obține paginile copil ale paginii curente

31 iul. 2012, 12:14:19
Vizualizări: 165K
Voturi: 55

Poate cineva să mă ajute cu wp_query.

Creez un fișier template/loop pentru a realiza o pagină de arhivă a paginilor copil ale paginii curente.

Această interogare trebuie să fie automată deoarece o folosesc pe mai multe pagini.

Aceasta este interogarea mea de mai jos, dar returnează doar articolele în loc de paginile copil.

<?php

$parent = new WP_Query(array(

    'post_parent'       => $post->ID,                               
    'order'             => 'ASC',
    'orderby'           => 'menu_order',
    'posts_per_page'    => -1

));

if ($parent->have_posts()) : ?>

    <?php while ($parent->have_posts()) : $parent->the_post(); ?>

        <div id="parent-<?php the_ID(); ?>" class="parent-page">                                

            <h1><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h1>

            <p><?php the_advanced_excerpt(); ?></p>

        </div>  

    <?php endwhile; ?>

<?php unset($parent); endif; wp_reset_postdata(); ?>

Mulțumesc anticipat pentru ajutor.

Josh

1
Comentarii

Încearcă această soluție

obține copii ai unui articol - http://wordpress.stackexchange.com/a/123143/42702

T.Todua T.Todua
13 nov. 2013 12:36:39
Toate răspunsurile la întrebare 4
2
101

Trebuie să schimbi child_of în post_parent și de asemenea să adaugi post_type => 'page':

WordPress codex Wp_query Parametrii Post & Pagină

<?php

$args = array(
    'post_type'      => 'page',
    'posts_per_page' => -1,
    'post_parent'    => $post->ID,
    'order'          => 'ASC',
    'orderby'        => 'menu_order'
 );


$parent = new WP_Query( $args );

if ( $parent->have_posts() ) : ?>

    <?php while ( $parent->have_posts() ) : $parent->the_post(); ?>

        <div id="parent-<?php the_ID(); ?>" class="parent-page">

            <h1><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h1>

            <p><?php the_advanced_excerpt(); ?></p>

        </div>

    <?php endwhile; ?>

<?php endif; wp_reset_postdata(); ?>
31 iul. 2012 12:23:25
Comentarii

Mersi frate, am încercat cu post_parent inițial dar 'post_type' => 'page' este cheia - WordPress folosește implicit postările atunci? O să accept răspunsul când îmi va permite.

Joshc Joshc
31 iul. 2012 12:27:44

Da, 'post_type' => 'post' este valoarea implicită.

mrwweb mrwweb
26 mar. 2019 17:01:21
1

Știu că aceasta este o întrebare foarte veche, dar din moment ce am ajuns aici, alții ar putea face la fel.

WordPress are o soluție foarte simplă pentru listarea paginilor, unde poți adăuga și câteva argumente.

Ai nevoie doar de asta pentru a afișa paginile copil ale unei pagini:

wp_list_pages(array(
  'child_of' => $post->ID,
  'title_li' => ''
))

Consultă pagina de referință pentru wp_list_pages pentru toate opțiunile pe care le poți aplica.

26 feb. 2020 12:40:12
Comentarii

Acest lucru va returna un șir HTML în loc de o listă de obiecte post, deci probabil nu este ceea ce dorește OP.

Alexander Holsgrove Alexander Holsgrove
27 iul. 2020 14:43:44
0

Rescriind acest lucru într-o funcție în functions.php trebuie să adaugi global $post;

function page_summary() {
    global $post;
    $args = array(
        'post_type'      => 'page', // Tipul postării - pagină
        'posts_per_page' => -1, // Toate paginile
        'post_parent'    => $post->ID, // Paginile copil ale paginii curente
        'order'          => 'ASC', // Ordine crescătoare
        'orderby'        => 'menu_order' // Sortează după ordinea din meniu
    );


    $parent = new WP_Query( $args );

    if ( $parent->have_posts() ) : 

        while ( $parent->have_posts() ) : $parent->the_post(); ?>
        <div id="parent-<?php the_ID(); ?>" class="parent-page">

        <h1><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h1>
        </div>
    <?php
         endwhile; 

    endif; 
    wp_reset_postdata(); // Resetează datele postului
}
5 feb. 2020 21:44:08
0

Deși OP a cerut în mod specific un wp_query, aceasta funcționează și:

get_pages('child_of='.$post->ID.'&sort_column=menu_order');

22 oct. 2020 23:44:39