Añadir varias opciones Order a la query

Puedes añadir varios valores orderby a los argumentos de WP_Query, pero WP_Query no soporta añadir direntes opciones de orden (DESC,ASC) a cada valor del argumento orderby (o al menos no lo he encontrado).

Para poder realizar esta tarea tendremos que usar el filtro posts_orderby.

1
2
3
4
5
6
7
 
$args = array(......
	      'orderby'        => 'post_title comment_count', 
	      'order'          => 'ASC', 
	      .....
	       );
new WP_Query( $args );

Esto generaría lo siguiente en la query:

 
SELECT .... FROM ..... ORDER BY post_title ASC, comment_count ASC

Pero si lo que queremos es

 
SELECT .... FROM ..... ORDER BY post_title ASC, comment_count DESC

usaríamos el filtro post_orderby de esta manera:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
function my_new_order_option($orderby) {
 
  global $wpdb;
  $order  = $wpdb->posts . '.post_title ASC, ';
  $order .= $wpdb->posts . '.comment_count DESC';
 
  return $order;
} 
 
add_filter( 'posts_orderby', 'my_new_order_option' ); 	
 
$query = new WP_Query( $args );
 
remove_filter( 'posts_orderby', 'my_new_order_option' );