Entradas recientes en una página de inicio estática
Quiero una página de inicio estática en mi sitio web de WordPress, ya la he configurado y tengo algo de contenido en ella. El siguiente paso es que quiero tener 5 entradas recientes debajo del contenido. En una página normal esto no es problema, pero tan pronto como configuro la página como página de inicio estática, las entradas desaparecen.
Después de horas de búsqueda, sé que necesito 'múltiples loops' en mi plantilla. He encontrado algunos ejemplos y he tratado de implementarlos en mi plantilla sin éxito. Creo que tengo más o menos el código para mostrar las entradas recientes, pero creo que estoy teniendo problemas con el marcado y las etiquetas de plantilla para mostrar realmente las entradas.
Espero que esto no sea demasiado complicado de entender, y realmente agradezco cualquier ayuda. He estado en esto durante 2 días sin ningún progreso. Puedo proporcionar cualquier código necesario de las plantillas o cualquier otra cosa.
Mi sitio web - www.completemuscleandfitness.com
Ok, esto es lo que tengo hasta ahora
<?php
// Array de argumentos para obtener 5 entradas recientes
$args = array( 'numberposts' => '5' );
$recent_posts = wp_get_recent_posts( $args );
foreach( $recent_posts as $recent ){
echo '<li><a href="' . get_permalink($recent["ID"]) . '" title="Ver '.esc_attr($recent["post_title"]).'" >' . $recent["post_title"].'</a> </li> ';
}
que muestra esto - www.completemuscleandfitness.com
¿Cómo puedo hacer que se vea bien como las otras páginas de entradas?

¡Primero, bienvenido!
Supongo que usas el archivo front-page.php
para mostrar tu página de inicio.
Lo que tienes que hacer es agregar el siguiente código en tu front-page.php
:
<h2>Publicaciones Recientes</h2>
<ul>
<?php
$args = array( 'numberposts' => '5' );
$recent_posts = wp_get_recent_posts( $args );
foreach( $recent_posts as $recent ){
echo '<li><a href="' . get_permalink($recent["ID"]) . '" title="Ver '.esc_attr($recent["post_title"]).'" >' . $recent["post_title"].'</a> </li> ';
}
?>
</ul>
Más información sobre wp_get_recent_posts()
puede encontrarse aquí.
Tu archivo de plantilla se verá algo así:
<div id="main">
<div class="new_post">
...
</div>
</div>
Podrías intentar poner este código dentro de <div id="main">
justo antes de la etiqueta de cierre </div>
:
<div id="main">
<div class="new_post">
...
</div>
<h2>Publicaciones Recientes</h2>
<ul>
<?php
$args = array( 'numberposts' => '5' );
$recent_posts = wp_get_recent_posts( $args );
foreach( $recent_posts as $recent ){
echo '<li><a href="' . get_permalink($recent["ID"]) . '" title="Ver '.esc_attr($recent["post_title"]).'" >' . $recent["post_title"].'</a> </li> ';
}
?>
</ul>
</div>

¡Gracias por tu respuesta! Como tengo una página de inicio estática, actualmente uso una plantilla llamada page-home-2.php ¿Puedo poner el código ahí? La parte difícil para mí es saber dónde insertar el código en la plantilla.

Puedes agregar el código en page-home-2.php
. Editaré mi respuesta para agregarte una breve descripción sobre dónde colocar este código.

Puedes crear tu propia plantilla de página de inicio personalizada al igual que el archivo index.php
en el directorio de tu tema activo.
Dentro de ese archivo puedes crear tu propia consulta personalizada e iterar a través de los resultados.
Ejemplo:
<h2>Publicaciones Recientes</h2>
<ul>
<?php
$query = new WP_Query( array ( 'orderby' => 'date', 'order' => 'DESC' ) );
while ( $query->have_posts() ) :
$query->the_post();
echo '<li>' . get_the_title() . '</li>';
endwhile;
?>
</ul>
Esto puedes considerarlo como una implementación de ejemplo. Puedes llevarlo más allá según sea necesario.
Ejemplo:
<?php
// La Consulta
$the_query = new WP_Query( $args );
// El Bucle
while ( $the_query->have_posts() ) :
$the_query->the_post();
echo '<li>' . get_the_title() . '</li>';
endwhile;
/* Restaurar los datos originales del Post
* Nota: Debido a que estamos usando new WP_Query, no estamos pisando
* la $wp_query original y no necesita ser restablecida.
*/
wp_reset_postdata();
/* La 2da Consulta (sin variable global) */
$query2 = new WP_Query( $args2 );
// El 2do Bucle
while( $query2->have_posts() ):
$query2->next_post();
echo '<li>' . get_the_title( $query2->post->ID ) . '</li>';
endwhile;
// Restaurar los datos originales del Post
wp_reset_postdata();
?>
Puedes obtener más información aquí. Y para múltiples parámetros de la consulta, consulta esto.

Gracias por tu ayuda, acabo de insertar el primer código en mi index.php para crear una plantilla personalizada. Ahora tengo las publicaciones recientes mostrándose pero sin enlaces y son solo una pequeña lista sobre mi contenido. ¿Cómo puedo hacer que las publicaciones se muestren como lo hacen en otras páginas de blog como esta - http://completemuscleandfitness.com/index.php/training/

Eso depende totalmente de la estructura DOM de tu tema actual. Es decir, cómo está escrita la lógica de presentación a través de PHP y HTML. Por ejemplo, puedes copiar y pegar toda la lógica de visualización de publicaciones en tu bucle personalizado en lugar de la declaración echo '<li>' . get_the_title() . '</li>';
y eliminar el ul
que lo envuelve.
Espero que eso ayude.

Estoy recibiendo mucha información, realmente lo aprecio. Creo que entiendo más o menos lo que dices. Pienso que aquí es donde finalmente me topo con un muro. He tenido las publicaciones recientes mostrándose antes pero no logro entender cómo se muestran correctamente. Simplemente no logro comprenderlo. ¿Si publico otra plantilla de blog del tema, alguien podría ayudarme con eso?

No logro entender lo que intentas decir. ¿Podrías explicarlo con más detalle?

Ok, puedo hacer que las publicaciones recientes aparezcan en mi página estática, pero se ven desordenadas. Probablemente necesito insertar algún código en mi página personalizada para que las publicaciones se muestren en el formato normal del tema. Simplemente no tengo idea de qué código poner ni dónde. Este código probablemente podría venir de otra plantilla del tema. ¿Estoy preguntando si al publicar una plantilla del tema, puedes ayudarme a colocar el código donde debe ir?

¡Gracias! Primero, esto es lo que tengo hasta ahora en mi plantilla personalizada, esto muestra publicaciones pero sin formato - http://pastebin.com/Qq08Z3Fp Lo siguiente es la plantilla del blog de mi tema - http://pastebin.com/uJyfbEeg

He modificado el código y aquí está el enlace http://pastebin.com/ubhyxpJV. Simplemente haz una copia de seguridad de tu archivo de plantilla existente y pega todo este código, creo que estarás listo para continuar.

Gracias por tus esfuerzos Rohit, he pegado el código en mi plantilla personalizada y lo he activado, pero las publicaciones recientes no aparecen en mi página de inicio.

He realizado algunas ediciones. Mira esto http://pastebin.com/QrcBXW0N. Intenta reemplazar este código con el existente y pruébalo.

¡Vamos avanzando! Ahora muestra las publicaciones recientes casi como deberían verse, pero las repite de modo que hay 3 publicaciones continuamente. Además, el contenido original de mi página ha desaparecido. Nuevamente, no puedo expresar cuánto agradezco tu ayuda.

Revisa los diversos parámetros de la consulta y creo que podrás lograrlo. Puedes consultar los parámetros aquí. Intenta cambiar los parámetros para obtener el número requerido de publicaciones según tus criterios.

Ok, gracias, voy a intentarlo. Una última cosa, ¿alguna idea sobre cómo puedo hacer que se muestre nuevamente el otro contenido? Los posts ahora ocupan todo el contenido

Sí, claro. Solo agrega esta línea <?php get_template_part('home'); ?>
después de <?php
/*
Template Name: Página de inicio personalizada
*/
?>
y debería funcionar probablemente. Pruébalo y si no funciona, por favor indícame el código de tu archivo home.php
en el directorio del tema activo. Verifica si el archivo está presente. Si no, intenta averiguar qué plantilla se está cargando para la línea de código que he sugerido.

Ok, ahora se muestra pero como una página separada, algo extraño - www.completemuscleandfitness.com Aquí está el código de la plantilla - http://pastebin.com/3xDU9w3R y aquí está mi home.php - http://pastebin.com/XELee582

Igual que en el paso anterior, haz una copia de seguridad del archivo e intenta reemplazar el código con este y luego prueba.

Lo mismo que antes pero los metadatos del footer han desaparecido. Siento ser tan pesado...

Tienes algún problema con la estructura DOM. Yo puedo ver la parte del footer. Solo revisa la estructura DOM correctamente y creo que eso resolverá el problema.

A menos que me esté perdiendo algo, creo que todos están trabajando demasiado duro.
Me parece que el widget de "publicaciones recientes" debería ser todo lo que necesitan.
Ejemplo:
La sección "Noticias Recientes" es el widget de "publicaciones recientes".
(Este sitio aún está en construcción, por eso tengo "test" en el subdominio).
