Skip to content

Instantly share code, notes, and snippets.

@annalinneajohansson
Last active January 17, 2018 14:40
Show Gist options
  • Save annalinneajohansson/5441726 to your computer and use it in GitHub Desktop.
Save annalinneajohansson/5441726 to your computer and use it in GitHub Desktop.
Solution to order posts by two different meta values (the same way ORDER val1, val2 would with SQL) http://wordpress.stackexchange.com/a/67391/5045
<?php
/*
* Solution to order first by date, then by start time (both are meta values)
* http://wordpress.stackexchange.com/a/67391/5045
* */
add_action( 'pre_get_posts', 'pre_get_posts_programpunkter' );
function pre_get_posts_programpunkter( $query ) {
if( !is_admin() && is_post_type_archive( 'programpunkt' ) && $query->is_main_query() ) {
$query->set( 'orderby', 'meta_value' );
$query->set( 'meta_key', 'event-date' );
$query->set( 'meta_query', array(
'relation' => 'AND',
array( 'key' => 'event-date', 'compare' => 'EXISTS' ),
array( 'key' => 'event-start', 'compare' => 'EXISTS' )
)
);
$query->set( 'order', 'ASC' );
}
}
add_filter('posts_orderby', 'programpunkter_orderby');
function programpunkter_orderby( $orderby ) {
if( get_queried_object()->query_var === 'programpunkt' ) {
global $wpdb;
$orderby = str_replace( $wpdb->prefix.'postmeta.meta_value', 'mt1.meta_value, mt2.meta_value', $orderby );
}
return $orderby;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment