Filter – Applying a different sort for certain sections / queries
This filter can be used to apply a different sort to a given query.
apto_get_orderby
Examples
The following code will change the returned sort for all terms archives and use the Archive sort list, similar to free Post Types Order plugin.
add_filter('apto/get_orderby', 'theme_apto_get_orderby', 10, 3); function theme_apto_get_orderby($new_orderBy, $orderBy, $query) { global $wpdb; //no need to apply for admin if(is_admin()) return $new_orderBy; //identify the order type automatic or manual $order_type = apto_get_order_type($query); //we don't want to change an automatic order if($order_type == 'auto') return $new_orderBy; list($post_type, $taxonomy) = apto_get_query_post_type_taxonomy($query); if($taxonomy != "_archive_") { $taxonomy = "_archive_"; $term_id = -1; //fetch the order list $order_list = apto_get_order_list($post_type, $term_id, $taxonomy, $query); if (count($order_list) > 0 ) { $new_orderBy = "FIELD(".$wpdb->posts.".ID, ". implode(",", $order_list) ."), ".$wpdb->posts.".post_date DESC"; } else { $new_orderBy = $wpdb->posts.".menu_order, " . $wpdb->posts.".post_date DESC"; } } return $new_orderBy; }
*This code should be used within the theme or a custom plugin.