WordPress ordena por defecto las entradas de la página de inicio por la fecha de publicación de la misma. Es posible cambiar este orden por diferentes parámetros. En este artículo nos centraremos en la ordenación por un campo personalizado utilizando el hook pre_get_posts.
En primer lugar debemos conocer que las entradas de WordPress permiten introducir metadatos a través de campos personalizados. Estos se encuentran en la parte inferior de la página de edición de la entrada. Como todo metadato se basa en un clave o ‘key’ y un valor o ‘value’. Una vez se ha creado una clave en una entrada, ésta nos aparecerá en el resto de entradas que creemos.
Una vez establecidos estos valores, podemos ordenar las entradas en la home por un metadato con el siguiente código:
add_action('pre_get_posts', 'order_posts_on_homepage');
function order_posts_on_homepage($query) {
if ($query->is_home() && $query->is_main_query()) {
$query->set('meta_key', 'Fecha inicio');
$query->set('orderby', array('meta_value' => 'ASC'));
}
}
Utilizamos un HOOK previo a la consulta de las entradas y la modificamos con el atributo orderby. En la página de WordPress Class Reference/WP Query podemos encontrar los parámetros que podríamos utilizar en el método $query->set().