Cuando trabajamos con consultas en WordPress, es muy probable que necesitemos ordenar la salida de alguna forma diferente a la estándar que suele ser por fecha de forma que el más reciente aparezca primero y vayan apareciendo de forma sucesiva entradas más antiguas.
Si usamos WordPress como una API o como una plataforma de aplicaciones, más que como un CMS y más aún como un CMS orientado a blogs, este hecho es una auténtica necesidad.
Un caso muy frecuente es que queramos ordenar la salida en función de un meta valor. La diferencia entre una tabla normal de una base de datos y la estructura de la base de datos de WordPress formada por entradas y sus meta valores, hace que no podamos aplicar el ORDER BY directamente a la tabla entradas.
¿Cómo tenemos que hacerlo? Muy simple, pasándole a query_posts una serie de parámetros que lo indiquen, veamos un ejemplo autoexplicativo:
$query_args['order'] = "ASC"; $query_args['meta_key'] = "mi_meta_clave"; // elegimos sobre qué tipo de meta valor queremos ordenar $query_args['orderby'] = "meta_value_num"; query_posts($query_args);
Como veis es sencillo, sólo tendremos que indicar:
Con eso lo tenemos ya todo.
https://www.youtube.com/embed/z-xGk9c_eOw Guionista y locutor: Manuel Ignacio López Quintero.Fecha de publicación: 31 de diciembre de 2024.
Ver comentarios
Muy bueno el artículo.
Estoy intentando crear un shortcode que me muestre los artículos de una fecha dada a otra. Es que quiero presentar los artículos de un mes, con el número de comentarios.
Lo único que he conseguido es mostrar los artículos aleatorios con este código:
$reciente = new WP_Query("cat=XX&showposts=2&orderby=rand");
while($reciente->have_posts()) : $reciente->the_post();?>
<a href="">
Habría alguna manera de seleccionar una fecha de inicio y otra de finalización para motrar los posts (¿y sería posible mostrar el número de comentarios?) con este o como el otro código.
Muchas gracias por todo y ánimo con el proyecto.
Son dos cosas diferentes.
Lo de mostrar el número de comentarios es independiente de la consulta, puedes hacer usar: http://codex.wordpress.org/Function_Reference/get_comments
Para el tema de las fechas, deberías usar una meta query dentro:
$query = new WP_Query (
array(
'posts_per_page' => 4,
'meta_query' => array(
array(
'key' => 'date_key_name',
'value' => date('Y-m-d'),
'compare' => '>=',
)
)
)
);
Con eso lo tendrías.
Muchas gracias. No soy programador y me perdía con tantas opciones que tiene wordpres.
Un saludo fuerte y repito, muchas gracias.
Si necesitas consultas técnicas relacionadas con WordPress de cualquier tipo, puedes consultarme profesionalmente en http://www.codection.com.
Gracias lo tendré en cuenta. Por ahora mi idea de negocio está en fases iniciales y el presupuesto es muy limitado, por eso tengo que ingeniármelas para desarrollarlo por mi cuenta. Muchas gracias por todo.
Pues ya sabes, cualquier duda simple por aquí y si quieres algo más nos preguntas en CODECTION y te lo averiguamos.
Hola Javier, esta clarísima tu explicación.
Estoy trabando con algo y te pido lo analices.
Tengo una columna con los likes de Facebook guardados (file_get_contents('http://graph.facebook.com/?id='.$permalink);)
y llamo el query:
$query_args['order'] = "ASC";
$query_args['meta_key'] = "facebook_likes";
$query_args['orderby'] = "meta_value";
query_posts($query_args);
pero no los ordena
¿Has probado a hacer lo mismo con un WP_Query?
Normalmente da menos problemas y está más recomendado que hacerlo con query_posts
Tengo un blog hecho en wordpress, donde indico esos valores de query_posts, lo que quiero lograr hacer es realizar entradas en distintas paginas