WordPress por defecto ordena las entradas y otros tipos de contenido (custom post type) de acuerdo a la fecha de creación y de manera descendente, sin embargo puedes cambiar el orden por defecto y ordenar tu contenido alfabéticamente a través de código.
Resultado Final
Lo que al final obtendrás será algo similar a lo que se muestra en la siguiente imagen:

Generalidades
El código para el ordenamiento se basa en cambiar la consulta SQL, usamos el Hook pre_get_posts el cual hace referencia a una función que toma como parámetro justamente el objeto de la consulta y al cual podemos hacer modificaciones.
Ordenar todas las entradas
Si quieres ordenar todas las entradas para que aparezcan en orden alfabético, ya sea en el inicio o en las categorías puedes usar el siguiente código:
add_action( 'pre_get_posts', 'dcms_order_content' );
function dcms_order_content( $query ) {
if ( $query->is_main_query() ){
$query->set( 'orderby', 'title' );
$query->set( 'order', 'ASC' );
}
return $query;
}
En el código anterior la comprobación se hace siempre si es la consulta principal y no hay ninguna condición adicional.
Ordenar entradas de una categoría específica
Para ordenar las entradas de una categoría específica puedes usar el siguiente código.
add_action( 'pre_get_posts', 'dcms_order_content' );
function dcms_order_content( $query ) {
if ( $query->is_main_query() && is_category('blog') ){
$query->set( 'orderby', 'title' );
$query->set( 'order', 'ASC' );
}
return $query;
}
En el código anterior he asumido que tienes entradas en una categoría llamada blog
Ordenar Custom Post Type de una categoría específica
Podemos extender el código de ordenamiento de entradas de una categoría específica para cualquier custom post type.
add_action( 'pre_get_posts', 'dcms_order_content' );
function dcms_order_content( $query ) {
if ( $query->is_main_query() && is_category('cocina') ){
$query->set( 'post_type', 'recetas_post_type' );
$query->set( 'orderby', 'title' );
$query->set( 'order', 'ASC' );
}
return $query;
}
En el código anterior he asumido que tienes un custom post type registrado con el id recetas_post_type y además que están mostrándose como parte de la categoría cocina.
Ordenar Custom Post Type para una taxonomía específica
Si tienes una taxonomía asociada a un custom post type, simplemente puedes cambiar la condición de comprobación de categoría a taxonomía.
add_action( 'pre_get_posts', 'dcms_order_content' );
function dcms_order_content( $query ) {
if ( $query->is_main_query() && is_tax('pais') ){
$query->set( 'post_type', 'recetas_post_type' );
$query->set( 'orderby', 'title' );
$query->set( 'order', 'ASC' );
}
return $query;
}
En el código anterior he asumido que tienes un custom post type registrado con el id recetas_post_type y además que esta asociado a una taxonomía llamada pais.
Conclusión
Como has podido comprobar, puedes cambiar la consulta que recupera las entradas o cualquier custom post type y hacer modificaciones, en los ejemplos anteriores hemos cambiado el orden de acuerdo al título para que se muestre de forma ascendente.
¿Aún con dudas?, en el siguiente video se detallan los puntos anteriores.
Hola, he estado intentando ordenar por fecha asc ciertas categorías y desc otras, con el código de entradas de una categoría específica y no me funcionó. Hice mal reemplando tittle por date?. Gracias por tus aportes son de mucha ayuda!
Hola, prueba usar ‘post_date’
Muchísimas gracias, pero quiero ordenar un listado de Personas por el apellido. Javier Aparicio etc etc
Como puedo indicar que ordene por la segunda palabra que aparezca en un título
🙂 mil gracias
Hola, si el apellido esta en un campo de la BD puedes hacerlo con una consulta SQL, sin embargo si el nombre y apellido estan en el mismo campo tendrías que realizar una conversión antes quitando el nombre, pero lo dificil aquí sería identificar el apellido ya que habrá nombres que sean sólo una palabra y otros dos. Si tienes esta necesidad lo mejor sería almacenar el apellido en un campo independiente de la BD.
Buenas, una pregunta, quise hacerlo con apellidos, usando metacampos (advanced custom fields) y funcionó
Pero luego al mostrar la pág me dice que no la encuentra, me ayudarian?
Hola, el cambio de orden no debería afectar si se muestra el detalle del contenido. Prueba sin embargo guardar las urls permanentes, desde Ajustes > Enlaces permanentes.