Múltiples páginas en una sola página

4 may 2014, 21:12:56
Vistas: 16.6K
Votos: 1

Tengo el siguiente código (creado amablemente por alchemyth en respuesta a una pregunta que publiqué en el foro de WordPress.org aquí) que espero usar para mostrar muchas páginas en una sola página:

<?php
$args = array(
  'post_type' => 'page',
  'post__in' => array( 2, 5, 35, 67 ) //lista de IDs de páginas
);
$page_query = new WP_Query( $args );
if( $page_query->have_posts() ) :
echo '<div class="pages-on-page">';
//imprime cualquier título general o encabezado aquí//
while( $page_query->have_posts() ) : $page_query->the_post();
echo '<div class="page-on-page" id="page_id-' . $post->ID . '">';
//imprime cualquier salida que desees por página//
echo '</div>';
endwhile;
echo '</div>';
else:
//texto opcional aquí si no se encuentran páginas//
endif;
wp_reset_postdata();
?>

Como principiante, no estoy seguro de dónde colocarlo para que funcione. Estaría muy agradecido si alguien pudiera ayudarme con esto.

0
Todas las respuestas a la pregunta 2
16

Echa un vistazo a las Plantillas de Página de WordPress;

Puedes crear un archivo con una estructura que coincida con tu tema actual y colocar tu código en el área de contenido (o colocar un action hook para tu contenido especial).

Ejemplo para Twenty Twelve:

/*
Template Name: Mi Página Personalizada
*/

get_header(); ?>

<div id="primary" class="site-content">
    <div id="content" role="main">

        <?php
        $args = array(
          'post_type' => 'page',
          'post__in' => array( 2, 5, 35, 67 ) //lista de page_ids
        );
        $page_query = new WP_Query( $args );
        if( $page_query->have_posts() ) :
        echo '<div class="pages-on-page">';
        //imprime cualquier título general o cabecera aquí//
        while( $page_query->have_posts() ) : $page_query->the_post();
        echo '<div class="page-on-page" id="page_id-' . $post->ID . '">';
        //imprime cualquier salida que desees por página//
        echo '</div>';
        endwhile;
        echo '</div>';
        else:
        //texto opcional si no se encuentran páginas//
        endif;
        wp_reset_postdata();
        ?>

    </div><!-- #content -->
</div><!-- #primary -->

****No olvides comenzar el archivo con <?php

Guarda este código como un archivo PHP con casi cualquier nombre tu_plantilla_personalizada.php y colócalo en la carpeta de tu tema hijo. Luego añade una nueva página y asigna la plantilla de página como Mi Página Personalizada como se ve arriba en el código.

Esto debería ser suficiente para que al menos puedas ver tu código en el frontend del sitio web.

4 may 2014 21:18:11
Comentarios

He colocado el código en una página usando un plugin PHP con 'plantilla predeterminada' y 'sin padre' - pero no funciona - ¿qué estoy haciendo mal?

martin martin
4 may 2014 21:23:21

Primero necesitaría saber de qué plugin estás hablando. Pero antes de eso, ¿has revisado el enlace del Codex de Wordpress que mencioné en mi respuesta?

Douglas.Sesar Douglas.Sesar
4 may 2014 21:27:37

El plugin está aquí. Y sí, lo revisé, pero debo confesar que mucho del contenido se me escapa - ¡seguiré intentando!

martin martin
4 may 2014 21:30:53

¿Qué tema estás usando? Podría ayudarte a comenzar con una plantilla de ejemplo.

Douglas.Sesar Douglas.Sesar
4 may 2014 21:40:47

Estoy usando twentytwelve - aunque he creado un child theme, ya que lo he modificado un poco.

martin martin
4 may 2014 21:42:49

¿Sería útil publicar mi URL?

martin martin
4 may 2014 21:52:13

Muchas gracias - sin embargo, no tengo la opción de crear una página personalizada en el modo de edición de página. Solo aparecen "plantilla predeterminada", "plantilla de página de inicio", "plantilla de página completa" y "arriba".

martin martin
4 may 2014 21:56:46

¿Tienes acceso FTP a tu sitio? Puedes arrastrar y soltar un archivo en la carpeta

Douglas.Sesar Douglas.Sesar
4 may 2014 21:57:23

Sí - el archivo ahora está en la carpeta child. ¿Cómo lo llamo?

martin martin
4 may 2014 21:59:09

Solo actualiza donde editas una página en el área de administración de WordPress. Ahora debería aparecer en el menú desplegable de plantillas de página

Douglas.Sesar Douglas.Sesar
4 may 2014 21:59:46

No hay suerte, me temo - lo siento, esto debe ser muy frustrante para ti - Claramente me estoy perdiendo algo muy obvio!

martin martin
4 may 2014 22:06:40

¿Simplemente copio el código de arriba y agrego < ? php al inicio, es correcto?

martin martin
4 may 2014 22:17:44

He intentado agregarlo en la carpeta public_html (carpeta raíz) y llamarlo directamente en la barra de direcciones, pero solo aparece una página en blanco :(

martin martin
4 may 2014 22:26:44

Quiero agradecerte +1 por tu ayuda, ¡lamento no haber podido hacerlo funcionar! :/

martin martin
4 may 2014 22:53:30

Necesitas agregar el código para la salida //imprime cualquier salida que desees por página//

Brad Dalton Brad Dalton
5 may 2014 00:58:05

@ Brad Dalton - muchas gracias - ¡¡finalmente un avance!!

martin martin
5 may 2014 13:51:54
Mostrar los 11 comentarios restantes
1

Esto funciona para mí con WP Twenty Twelve, no olvides cambiar los IDs de las páginas

<?php
/*
Template Name: Mi Página Personalizada
*/

get_header();
$args = array(
    'posts_per_page' => get_option('posts_per_page'), // el valor por defecto se toma de la configuración, pero puedes usar uno personalizado
    'paged'          => $current_page // página actual
    );
    query_posts(
    array( 'post_type'=>'page', 'post__in' => array( 6891, 9400 ) ) //cambiar los IDs de página
); ?>

<div id="primary" class="site-content">
    <div id="content" role="main">
<?php
            while ( have_posts() ) :
                the_post();
                ?>
                <?php if ( has_post_thumbnail() ) : ?>
                    <div class="entry-page-image">
                        <?php the_post_thumbnail(); ?>
                    </div><!-- .entry-page-image -->
                <?php endif; ?>

                <?php get_template_part( 'content', 'page' ); ?>

                <?php endwhile; // fin del loop. ?>

    </div><!-- #content -->
    </div><!-- #primary -->

<?php get_sidebar(); ?>
<?php get_footer(); ?>
2 may 2020 02:06:07
Comentarios

¡Hola! Gracias por tu contribución y bienvenido a WordPress.StackExchange. Algunas cosas a considerar para una posible [edición] de tu respuesta, que podrían generar más votos positivos y, por lo tanto, desbloquear más posibilidades para ti en este sitio: Por favor, ten en cuenta que no todo el mundo puede leer caracteres cirílicos. También ayuda explicar por qué tu fragmento de código ayudará al OP a resolver su problema. ¡Espero que esto ayude! ¡Que tengas un buen día!

kaiser kaiser
2 may 2020 03:44:30