wp query para obtener páginas hijas de la página actual

31 jul 2012, 12:14:19
Vistas: 165K
Votos: 55

¿Alguien puede ayudarme con wp_query?

Estoy creando un archivo de plantilla/bucle para crear una página de archivo de las páginas hijas de la página actual.

Esta consulta necesita ser automática ya que la estoy usando en varias páginas.

Esta es mi consulta a continuación, pero solo devuelve mis entradas en lugar de las páginas hijas.

<?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(); ?>

Gracias de antemano por cualquier ayuda.

Josh

1
Comentarios

Prueba esta solución

obtener hijos de una publicación - http://wordpress.stackexchange.com/a/123143/42702

T.Todua T.Todua
13 nov 2013 12:36:39
Todas las respuestas a la pregunta 4
2
101

Debes cambiar child_of por post_parent y también añadir post_type => 'page':

Código de WordPress Wp_query Parámetros de Post & Página

<?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 jul 2012 12:23:25
Comentarios

Gracias amigo, probé con post_parent originalmente pero es 'post_type' => 'page' lo que era la clave - ¿las consultas de WordPress usan post por defecto entonces? Aceptaré la respuesta cuando me deje hacerlo.

Joshc Joshc
31 jul 2012 12:27:44

Sí, 'post_type' => 'post' es el valor por defecto.

mrwweb mrwweb
26 mar 2019 17:01:21
1

Sé que esta es una pregunta muy antigua, pero como llegué aquí, otros también podrían hacerlo.

WordPress tiene una solución muy simple para listar páginas, donde también puedes agregar algunos argumentos.

Esto es todo lo que necesitarás para mostrar las páginas hijas de una página:

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

Mira la página de referencia para wp_list_pages para ver todas las opciones que puedes aplicar.

26 feb 2020 12:40:12
Comentarios

Esto devolverá una cadena HTML en lugar de una lista de objetos de publicación, por lo que probablemente no sea lo que el OP busca.

Alexander Holsgrove Alexander Holsgrove
27 jul 2020 14:43:44
0

Para reescribir esto como una función en functions.php necesitas agregar global $post;

function page_summary() {
    global $post;
    $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() ) : 

        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(); 
}
5 feb 2020 21:44:08
0

Aunque el OP preguntó específicamente por un wp_query, esto también funciona:

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

22 oct 2020 23:44:39