The code I am posting is a modified and simplified version of yours. I got my solution using your code.
/**
* Filter WP_Term_Query meta query
*
* @param object $query WP_Term_Query
* @return object
*/
function filter_terms_clauses( $pieces, $taxonomies, $args ) {
global $pagenow, $wpdb;
if(!is_admin()) {
return $pieces;
}
if(
is_admin()
&& $pagenow == 'edit-tags.php'
&& $taxonomies[0] == 'typer'
&& ( isset($_GET['orderby']) && $_GET['orderby'] == 'prioritet' )
) {
$pieces['join'] .= ' INNER JOIN ' . $wpdb->termmeta . ' AS tm ON t.term_id = tm.term_id ';
$pieces['where'] .= ' AND tm.meta_key = "prioritet"';
$pieces['orderby'] = ' ORDER BY tm.meta_value ';
$pieces['order'] = isset($_GET['order']) ? $_GET['order'] : "DESC";
}
return $pieces;
}
add_filter( 'terms_clauses', 'filter_terms_clauses', 10, 3 );
Hope this one helps.