Si hace rato que usas WordPress, habrás notado que puede servir para varias cosas además de un blog, como por ejemplo para un videoclub (si aún existieran) donde podríamos ver distintas películas, directores, reseñas, actores. Ahora, cuando queremos empezar a ordenar los posteos según criterios que no alcanzan con categorías y tags nos encontramos en problemas, o no?
Para nada, WordPress cuenta con la opción de hacer llamadas personalizadas a la base de datos y dar uso de los «custom_fields», que podríamos traducir como variables personalizadas. Si bien cuando creamos estas variables le otorgamos un nombre y un valor, en la base de datos no se guardan correlativamente, pero lo dejaremos para otro posteo, sólo por ahora les avisamos para que estén al tanto.
Para hacerlo simplemente en la vista avanzada de cada posteo dispones de la opción de «custom_fields» y debajo podes crearlos en el momento o reutilizar otros que hayas hecho.
Qué es una WP_Query?
Sirven para hacer llamados complejos a la base de datos de una manera segura, simple y modular. Podríamos bien escribir nuestro propio PHP y conexión a base de datos, pero así no contaríamos con todas las normas de seguridad que ya vienen con WordPress.
El bucle «normal» de WordPress
Cuando editamos los php del tema podemos encontrar, por ejemplo en category.php donde se guarda la vista para mostrar las categorías:
<?php
if(have_posts()) :
while(have_posts()) :
the_post();
?>
<h1><?php the_title() ?></h1>
<div class='post-content'><?php the_content() ?></div>
<?php
endwhile;
else :
?>
Oops, no hay contenido aún.
<?php
endif;
?>
Usamos la función have_posts() para verificar si la categoría tiene posteos, y luego the_post() para cargar la llamada a la base de datos para mostrarlo con the_content().
Más adelante veremos cómo modificar cómo se muestra este contenido.
Parámetros de custom fields
Ahora bien mostrar los contenidos pueden estar asociados a campos personalizados.
Por ejemplo si creamos en un posteo la variable «productora» con el valor «productora imaginaria» podemos hacer el siguiente llamado:
$query = new WP_Query( array( 'meta_value' => 'productora imaginaria' ) );
Y nos devolverá todos los posteos que hayan sido guardados con el valor «productora imaginaria», ojo, como decíamos antes en cualquiera de los campos personalizados, no exclusivamente en «productora».
Modificando el ejemplo anterior así:
while( $query->have_posts() ) {
$query->the_post();
}
Agregamos al final para limpiar, resetear la wp query.
wp_reset_postdata();
Vamos a ir de a poco, por ahora queremos que se enteren algunas prestaciones que no aparecen a simple vista en WordPress.
Fuentes:
https://codex.wordpress.org/Class_Reference/WP_Query
https://www.smashingmagazine.com/2013/01/using-wp_query-wordpress/