Wallmander\ElasticsearchIndexer\Model\Query\WpConverter::argOrderby PHP Method

argOrderby() public static method

public static argOrderby ( Query $query, $value, &$q )
$query Wallmander\ElasticsearchIndexer\Model\Query
    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;
            }
        }
    }