Skip to content

Instantly share code, notes, and snippets.

@lepittenger
Created December 29, 2021 16:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lepittenger/0823a3bc57b55805ed21fe82469637a2 to your computer and use it in GitHub Desktop.
Save lepittenger/0823a3bc57b55805ed21fe82469637a2 to your computer and use it in GitHub Desktop.
Conditional Orderby
$order = '';
if ( sort_group = 1 ) {
$order = 'ASC';
}
if ( sort_group = 1 ) {
$order = 'DESC';
}
$args = array(
'orderby' => 'meta_value_num',
'meta_key' => 'start_date',
'order' => $order;
);
$query = new WP_Query( $args );
@vegasgeek
Copy link

I'm doing this via pre_get_posts() and here is what my current query looks like:

$meta_query = array(
	'relation'    => 'AND',
	'status_sort' => array(
		'key'     => 'sort_group',
		'value'   => 0,
		'compare' => '>',
	),
	'date_sort'   => array(
		'key'     => 'start_date',
		'compare' => 'EXISTS',
	),
);

$query->set(
	'orderby',
	array(
		'status_sort' => 'ASC',
		'date_sort'   => 'ASC',
	),
);

// Set the meta_query parameter.
$query->set( 'meta_query', $meta_query );

I'm also looking at https://developer.wordpress.org/reference/hooks/posts_orderby/ as a possible option, but that's not getting me any closer just yet.

Really appreciate your input.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment