library/Content/PostFilters.php
public function doPostOrdering($query)
    {
        // Do not execute this in admin view
        if (is_admin() || !(is_archive() || is_home()) || !$query->is_main_query()) {
            return $query;
        }

        $isMetaQuery = false;

        $posttype = $query->get('post_type');
        if (empty($posttype)) {
            $posttype = 'post';
        }

        // Get orderby key, default to post_date
        $orderby = (isset($_GET['orderby']) && !empty($_GET['orderby'])) ? sanitize_text_field($_GET['orderby']) : get_field('archive_' . sanitize_title($posttype) . '_sort_key',
            'option');
        if (empty($orderby)) {
            $orderby = 'post_date';
        }

        if (in_array($orderby, array('post_date', 'post_modified', 'post_title'))) {
            $orderby = str_replace('post_', '', $orderby);
        } else {
            $isMetaQuery = true;
        }

        // Get orderby order, default to desc
        $order = (isset($_GET['order']) && !empty($_GET['order'])) ? sanitize_text_field($_GET['order']) : get_field('archive_' . sanitize_title($posttype) . '_sort_order',
            'option');
        if (empty($order) || !in_array(strtolower($order), array('asc', 'desc'))) {
            $order = 'desc';
        }

        $query->set('order', $order);

        // Return if not meta query
        if (!$isMetaQuery) {
            $query->set('orderby', $orderby);
            return $query;
        }

        if (isset($_GET['orderby']) && $_GET['orderby'] == 'meta_key' && isset($_GET['meta_key']) && !empty($_GET['meta_key'])) {
            $orderby = sanitize_text_field($_GET['meta_key']);
        }

        // Continue if meta query
        $query->set('meta_key', $orderby);
        $query->set('orderby', 'meta_value');

        return $query;
    }
public function doPostOrdering($query)
    {
        // Do not execute this in admin view
        if (is_admin() || !(is_archive() || is_home()) || !$query->is_main_query()) {
            return $query;
        }

        $isMetaQuery = false;

        $posttype = $query->get('post_type');
        if (empty($posttype)) {
            $posttype = 'post';
        }

        // Get orderby key, default to post_date
        $orderby = (isset($_GET['orderby']) && !empty($_GET['orderby'])) ? sanitize_text_field($_GET['orderby']) : get_field('archive_' . sanitize_title($posttype) . '_sort_key',
            'option');
        if (empty($orderby)) {
            $orderby = 'post_date';
        }

        if (in_array($orderby, array('post_date', 'post_modified', 'post_title'))) {
            $orderby = str_replace('post_', '', $orderby);
        } else {
            $isMetaQuery = true;
        }

        // Get orderby order, default to desc
        $order = (isset($_GET['order']) && !empty($_GET['order'])) ? sanitize_text_field($_GET['order']) : get_field('archive_' . sanitize_title($posttype) . '_sort_order',
            'option');
        if (empty($order) || !in_array(strtolower($order), array('asc', 'desc'))) {
            $order = 'desc';
        }

        $query->set('order', $order);

        // Return if not meta query
        if (!$isMetaQuery) {
            $query->set('orderby', $orderby);
            return $query;
        }

        if (isset($_GET['orderby']) && $_GET['orderby'] == 'meta_key' && isset($_GET['meta_key']) && !empty($_GET['meta_key'])) {
            $orderby = sanitize_text_field($_GET['meta_key']);
        }

        // Continue if meta query
        $query->set('meta_key', $orderby);
        $query->set('orderby', 'meta_value');

        return $query;
    }
public function doPostOrdering ( $ query ) { // Do not execute this in admin view if ( is_admin ( ) || ! ( is_archive ( ) || is_home ( ) ) || ! $ query -> is_main_query ( ) ) { return $ query ; } $ isMetaQuery = false ; $ posttype = $ query -> get ( 'post_type' ) ; if ( empty ( $ posttype ) ) { $ posttype = 'post' ; } // Get orderby key, default to post_date $ orderby = ( isset ( $ _GET [ 'orderby' ] ) && ! empty ( $ _GET [ 'orderby' ] ) ) ? sanitize_text_field ( $ _GET [ 'orderby' ] ) : get_field ( 'archive_' . sanitize_title ( $ posttype ) . '_sort_key' , 'option' ) ; if ( empty ( $ orderby ) ) { $ orderby = 'post_date' ; } if ( in_array ( $ orderby , array ( 'post_date' , 'post_modified' , 'post_title' ) ) ) { $ orderby = str_replace ( 'post_' , '' , $ orderby ) ; } else { $ isMetaQuery = true ; } // Get orderby order, default to desc $ order = ( isset ( $ _GET [ 'order' ] ) && ! empty ( $ _GET [ 'order' ] ) ) ? sanitize_text_field ( $ _GET [ 'order' ] ) : get_field ( 'archive_' . sanitize_title ( $ posttype ) . '_sort_order' , 'option' ) ; if ( empty ( $ order ) || ! in_array ( strtolower ( $ order ) , array ( 'asc' , 'desc' ) ) ) { $ order = 'desc' ; } $ query -> set ( 'order' , $ order ) ; // Return if not meta query if ( ! $ isMetaQuery ) { $ query -> set ( 'orderby' , $ orderby ) ; return $ query ; } if ( isset ( $ _GET [ 'orderby' ] ) && $ _GET [ 'orderby' ] == 'meta_key' && isset ( $ _GET [ 'meta_key' ] ) && ! empty ( $ _GET [ 'meta_key' ] ) ) { $ orderby = sanitize_text_field ( $ _GET [ 'meta_key' ] ) ; } // Continue if meta query $ query -> set ( 'meta_key' , $ orderby ) ; $ query -> set ( 'orderby' , 'meta_value' ) ; return $ query ; }
Do post ordering for archives
@param  object $query Query
@return object        Modified query
Do post ordering for archives