public static function argOrderby(Query $query, $value, &$q)
{
if ($query->isSingle) {
return;
}
$o = !empty($q['order']) ? strtolower($q['order']) : 'desc';
foreach (explode(' ', $value) as $key) {
$key = str_replace('wp_posts.', '', $key);
switch ($key) {
case 'ID':
$query->addSort('post_id', $o);
break;
case 'post_author':
case 'author':
$query->addSort('post_author.id', $o);
break;
case 'post_title':
case 'title':
$query->addSort('post_title.raw', $o);
break;
case 'post_name':
case 'post_type':
case 'post_date':
case 'post_modified':
case 'post_parent':
case 'post_comment_count':
case 'menu_order':
$query->addSort($key, $o);
break;
case 'rand':
// not supported
break;
case 'meta_value_num':
$query->addSort('post_meta_num.' . $q['meta_key'], $o);
break;
case 'meta_value':
$query->addSort('post_meta.' . $q['meta_key'], $o);
break;
case 'relevance':
$query->addSort(['_score' => 'desc', 'menu_order' => 'asc', 'post_title' => 'asc']);
break;
case 'none':
case '':
$query->addSort('post_date', 'desc');
break;
default:
$query->addSort('post_' . $key, $o);
break;
}
}
}