Change order of Custom Taxonomy List

By default WordPress orders custom taxonomies (as tags in this case) by alphabetical order not by the order they were entered in the tag box.

Is anyone aware of a way to show the custom taxonomies in the order they were entered in the post edit screen?

Read More

The url in question is: http://granadatheater.com/

The GGW (Goes Good With) artists are currently in alphabetical order and they want it changed so that they are ordered the same way they were entered.

So if the enter it Artist1, Artist3, Artist2 that’s how it should show up on the frontend of the site.

Related posts

Leave a Reply

5 comments

  1. This isn’t possible “out of the box”…

    The default ‘orderby’ options are (ascending or descending)

    • ID name
    • Default
    • slug
    • count
    • term_group

    These are all detailed in the codex.

    That said there are some clever ladies & gents here. If anyone can solve it, one of these guys can i’m sure!

  2. After quite a bit of searching and extensive tests, I found the answer.

    Add this code to your theme’s functions.php:

    function set_the_terms_in_order ( $terms, $id, $taxonomy ) {
        $terms = wp_cache_get( $id, "{$taxonomy}_relationships_sorted" );
        if ( false === $terms ) {
            $terms = wp_get_object_terms( $id, $taxonomy, array( 'orderby' => 'term_order' ) );
            wp_cache_add($id, $terms, $taxonomy . '_relationships_sorted');
        }
        return $terms;
    }
    add_filter( 'get_the_terms', 'set_the_terms_in_order' , 10, 4 );
    
    function do_the_terms_in_order () {
        global $wp_taxonomies;  //fixed missing semicolon
        // the following relates to tags, but you can add more lines like this for any taxonomy
        $wp_taxonomies['post_tag']->sort = true;
        $wp_taxonomies['post_tag']->args = array( 'orderby' => 'term_order' );    
    }
    add_action( 'init', 'do_the_terms_in_order');
    

    (Credit: this is based on – but improved – http://wordpress.kdari.net/2011/07/listing-tags-in-custom-order.html)

  3. I’ve been struggling to find the answer to alphabetical child terms of a custom taxonomy … I wouldn’t recommend altering core WP files, so here’s what I added to my taxonomy.php file to list out custom taxonomy descriptions, with links to child terms in alphabetical order. Modify to suit your needs, I hope this helps someone out there.

    // Get Main Taxonomy for use in template file
    $term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) );
    $termTaxonomy = $term->taxonomy;
    
    <h1><?php echo apply_filters( 'the_title', $term->name ); ?></h1>
    
    <?php // test for description before unleashing a div 
    if ( !empty( $term->description ) ): 
      echo '<div class="description">';
      echo $term->description;
      echo '</div>;
    endif; ?>
    
    // Now get children terms, using get_term & 'child_of' get's us alphabetical order
    $termchildren = get_terms( $termTaxonomy, array(
      'child_of'     => $term->term_id,
      'hierarchical' => 0,
      'fields'       => 'ids',
      'hide_empty'   => 0
    ) );
    
    // Make an alphabetical linked list
    echo '<ul>';
    foreach ($termchildren as $child) {
      $term = get_term_by( 'id', $child, $termTaxonomy );
    
      // Modify this echo to customize the output for each child term
      echo '<li><a href="' . get_term_link( $term->name, $termTaxonomy ) . '" alt="' .$term->description. '">' . $term->name . '</a></li>';
    }
    echo '</ul>';
    
  4. And after to display in web page the good order it could be :

    to put “orderby” => “term_group” in your wp_get_post_terms

    Example :

    “poste” is my custom taxonomy name, put yours

    $poste =  wp_get_post_terms($post->ID, 'poste', array("fields" => "names", "orderby" => "term_group"));
            if(!empty($poste[0])){ echo $poste[0];}
            if(!empty($poste[1])){
              echo " - ", $poste[1]; }