Ordenar publicaciones de WordPress por fecha
TL; DR: si está buscando una manera fácil de ordenar las publicaciones de WordPress por fecha (ya sea descendente o ascendente) en el área de administración sin que los usuarios hagan clic en el encabezado de la columna Fecha, puede hacerlo mediante el uso del pre_get_posts
filtro que proporciona una referencia a la instancia WP_Query
que se ejecuta en la página.
Para ver ejemplos en código sobre cómo hacerlo, consulte el resto del artículo.
Ordenar publicaciones de WordPress
Este artículo está escrito de tal manera que asume su configuración basada en clases. Esto significa que la configuración del filtro se define en una función como init
e invoca un public
nombre de función en la clase como sort_articles_by_recent_time
.
Finalmente, define una prioridad 10
y especifica que la función aceptará un solo argumento (que es una instancia de WP_Query
.
Primero, agregue el siguiente filtro:
add_action( 'pre_get_posts', [ $this, 'sort_articles_by_recent_time' ], 10, 1 );
Luego agregue la siguiente función:
Así es como funciona:
- Tenga en cuenta las primeras comprobaciones condicionales si no estamos en el área de administración o si no estamos en la
edit.php
página (que es la página de listado de publicaciones), simplemente dejamos la funcionalidad. Esta es una cláusula de guardia o devolución anticipada. - Si cumplimos con ambos criterios, actualizaremos la consulta para que ordene las publicaciones por fecha en orden descendente. Esto significa que las fechas más recientes siempre aparecerán en la parte superior.
Esto no tiene en cuenta el estado de la publicación (por lo que si es una draft
o una publicación con el publish
estado, no importará). Además, esto evitará que los usuarios tengan que hacer clic en el encabezado de la columna Fecha para ordenar los resultados según sea necesario si esto es algo que desea en su solución.
Referencias
[pre_get_posts](https://developer.wordpress.org/reference/hooks/pre_get_posts/)
[WP_Query](https://developer.wordpress.org/reference/classes/wp_query/)