Skip to content

Instantly share code, notes, and snippets.

@ontiuk
Created December 28, 2016 12:08
Show Gist options
  • Save ontiuk/73280a0493aebb3bb21803ebb1a92592 to your computer and use it in GitHub Desktop.
Save ontiuk/73280a0493aebb3bb21803ebb1a92592 to your computer and use it in GitHub Desktop.
WordPress: Taxonomy Meta Sorting With Terms_Clauses Filter
add_filter( 'terms_clauses', 'filter_terms_clauses', 10, 3 );
/** 
* Filter WP_Term_Query meta query 
* @param   object  $query  WP_Term_Query 
* @return  object 
*/
function filter_terms_clauses( $pieces, $taxonomies, $args ) {
global $pagenow, $wpdb;    
// Require ordering   
$orderby = ( isset( $_GET['orderby'] ) ) ? trim( sanitize_text_field( $_GET['orderby'] ) ) : '';    
if ( empty( $orderby ) ) { return $pieces; }   
// set taxonomy   
$taxonomy = $taxonomies[0];   
// only if current taxnomy or edit page in admin       
if ( !is_admin() || $pagenow !== 'edit-tags.php' || !in_array( $taxonomy, [ 'my-taxonomy-name' ] ) ) { return $pieces; }   
// and ordering matches
if ( $orderby === 'my-taxonomy-meta-field-name' ) {       
$pieces['join']  .= ' INNER JOIN ' . $wpdb->termmeta . ' AS tm ON t.term_id = tm.term_id ';       
$pieces['where'] .= ' AND tm.meta_key = "my-taxonomy-meta-field-name" ';        
$pieces['orderby']  = ' ORDER BY tm.meta_value ';    
}   
return $pieces;
}
// Change taxonomy and taxonomy meta fields as required. Requires taxonomy meta column and sortable column filters to be active.
// This just ties them together and makes the taxonomy meta field column sortable
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment