En las siguientes líneas veremos cómo obtener un listado con todos los artículos de un blog en WordPress para mostrarlos en una página, tal y como puedes ver en mi página de listado de artículos, sin emplear plugins.
Para realizar el proceso crearemos una plantilla a la que añadiremos el código necesario para realizar la consulta a la base de datos de WordPress, al realizar esta consulta nos mostrará el listado de artículos cuando asignemos a una página dicha plantilla.
La obtención de un listado de artículos puede ser interesante para ofrecer a nuestro usuarios del sitio web una forma sencilla y rápida para que puedan consultar todo el contenido que tenemos creado en nuestro blog en forma de posts.
Otra de las ventajas de obtener un listado es que nos puede servir de utilidad a la hora de promocionar nuestro sitio en redes sociales ya que de una forma ágil podremos disponer de los títulos y enlaces de cada unos de los artículos que tenemos publicados. Añadir finalmente que cada vez que publiquemos un nuevo post esta lista se actualizará automáticamente ya que estaremos recorriendo todos los artículos del blog.
La consulta que haremos es muy básica pero siempre se puede realizar más compleja para diferenciar por categorías, custom post type, etc.
Creando la plantilla en WordPress
En primer lugar como he comentado el primer paso es crear una plantilla de página en WordPress. Para ello crearemos un fichero php que guardaremos en nuestra carpeta del theme que estemos empleando, al que podemos llamar listado-articulos.php.
Para definir una plantilla en WordPress deberá existir el siguiente código en la parte superior del documento php que acabamos de comentar.
<?php /* Template Name: Listado-articulos */ ?>
Si deseas más información sobre page templates visita este link.
Bien, una vez hecho esto si nos dirigimos al administrador de páginas de WordPress, creamos una nueva página y vamos a la zona de asignación de plantillas a páginas, en el desplegable, observaremos que la nueva plantilla ya está disponible para asignarla.
Pero claro, como vemos es una plantilla que no tiene contenido, por lo que si la asignamos, guardamos cambios y previsualizamos, veremos una página en blanco en nuestro navegador.
Ahora es el momento de empezar a trabajar para agregar el contenido correspondiente a nuestra plantillas de página para que muestre nuestro listado de artículos.
Las funciones generales de WordPress que deberá incluir nuestra plantillas serán get_header y get_footer, get_sidebar será opcional condicionado por el tipo de estructura que deseemos para nuestra página de plantilla, si es a ancho completo o no, por ejemplo. De igual modo para el ejemplo incluiré también get_sidebar.
Estas funciones son generales de WordPress, get header nos permite traer la cabecera de nuestra web, get sidebar la barra lateral y el pie de la web get footer. Si no estás familiarizado con estas funciones te recomiendo que consultes el Codex.
Siguiendo con el ejemplo nuestro fichero de ejemplo por ahora quedará así:
<?php /* Template Name: Listado-articulos */ ?> <?php get_header; ?> <?php get_sidebar; ?> //Aquí va el código necesario para realizar la Query en Wordpress <?php get_footer; ?>
Consulta a la base de datos con WP_Query
Ahor nos falta incluir el código necesario para realizar la consulta a la base de datos con el fin de que nos muestre la información que deseamos imprimir en nuestra página que es el listado de artículos, para ello deberemos realizar una Query en WordPress pasando los argumentos para dicha petición.
Vamos pues a ello, incluimos el código necesario en nuestra plantilla y comentamos que es cada cosa.
<?php /* Template Name: Listado-articulos */ ?> <?php get_header; ?> <?php get_sidebar; ?> //Aquí va el código necesario para realizar la Query en Wordpress <ul> <?php $args=array( 'post_type' => 'post', 'post_status' => 'publish', 'orderby' => 'ASC', 'posts_per_page' => '-1', ); // The Query $the_query = new WP_Query( $args ); // The Loop if ( $the_query->have_posts() ) { while ( $the_query->have_posts() ) { $the_query->the_post(); ?> <li id="post-<?php the_ID(); ?>" <?php post_class(); ?>> <a href="<?php the_permalink();?>" title="<?php the_title();?>" target="_blank"><?php the_title();?></a> </li><!-- #post-ID --> <?php }} else { echo 'No hay artículos'; // no se encontraron artículos } /* Restore original Post Data */ wp_reset_postdata(); ?> </ul> <?php get_footer; ?>
Con el código que hemos incluído estamos realizando la consulta con la clase de WordPress Wp_query a la que le vamos a pasar los argumentos necesarios para que nos devuelva todos los post.
‘post_type’ => ‘post’,
Le indicamos que el tipo de post que deseamos es el post por defecto. En el caso que desearamos consultar algún otro post personalizado deberíamos indicar el nombre.
‘post_status’ => ‘publish’,
El estado de los artículos que deseamos deben estar publicados.
‘orderby’ => ‘ASC’,
Indicamos el orden definido temporalmente, más nuevo o más antiguo primero.
‘posts_per_page’ => ‘-1′,
Este valor indica que deseamos que muestre todos los artículos de nuestro blog. Sería posible indicar otro valor numérico en cuanto a número de post a mostrar, si este número es mayor al número total de artícuos sería aconsejable incluir el código necesario para mostrar la paginación.
Existen otros argumentos que sería posible incluir en la consulta, puedes revisarlos en la clase Wp_query por si deseas realizar otro tipo de consultas.
Una vez que le hemos pasado los argumentos se ejecuta el Loop que nos permite recorrer todos los artículos del blog, mientras existan post con las condiciones definidas se imprimirán cada uno de ellos con el título del post que enlazará al artículo completo, creando así finalmente nuestro listado.
Si volvemos a la previsualización de nuestra página en la que hemos asignado la plantilla que acabamos de terminar, se debe de mostrar la relación de posts correctamente si no nos ha fallado nada.
Conclusión
En el contenido hemos visto cómo crear una plantilla en WordPress, qué funciones generales se incluyen y la consulta que nos permite obtener la relación de post en una página empleando la clase WP_Query.
Espero que os sea de utilidad el contenido y que lo compartais por vuestros canales sociales
, gracias por vuestro tiempo y un saludo.