Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

I have a custom post type registered (our-team) and I have a taxonomy (team-categories) with multiple terms. Each term has multiple posts assigned to it. On my custom post type archive (archive-our-team.php) I am using the code below to separate my loop by term, which is working great, but defaults to alphabetical ordering by term:

A Term Name - all posts in this term

B Term Name - all posts in this term

C Term Name - all posts in this term

I can't figure out how to customize the order of the terms so I can get something like (any order I want):

C Term Name - all posts in this term

A Term Name - all posts in this term

B Term Name - all posts in this term

Is there a way to set an order number for each term in a taxonomy, so when I get_terms and then output with foreach they are in the order I want?

<?php //for a given post type, return all
$post_type = 'our-team';
$tax = 'team-categories';
$tax_terms = get_terms($tax);
if ($tax_terms) {
    foreach ($tax_terms  as $tax_term) {
        $args=array(
          'post_type' => $post_type,
          "$tax" => $tax_term->slug,
          'post_status' => 'publish',
          'posts_per_page' => -1,


        );

        $my_query = null;
        $my_query = new WP_Query($args);
        if( $my_query->have_posts() ) {

            echo '<h2 style="clear:both;">'.$tax_term->name.'</h2>';
            while ($my_query->have_posts()) : $my_query->the_post(); 
             //set vars for custom fields
            $team_location = get_field('team_location');
            $team_position = get_field('team_position');
            $team_email = get_field('team_email');
            $team_name = get_the_title();
            $team_link = get_permalink();

            //get only first name. usage: echo $first_name[0];
            $team_first_name = $team_name;
            $first_name = explode(' ', trim($team_first_name));
            ?>
                <div class="team_member">
                    <?php if ( has_post_thumbnail()) { ?>
                        <a class="thickbox" href="<?php echo $team_link; ?>"><?php the_post_thumbnail('medium'); ?></a>                     
                    <?php } else { ?>
                        <img src="<? bloginfo('template_directory' );?>/library/images/no_pic.jpg" alt="no image provide" />
                    <?php } ?>

                    <div class="team_member_info">
                        <h2><?php the_title();?></h2>
                        <p><a class="thickbox" href="<?php echo $team_link; ?>">More info <?php// echo $first_name[0]; ?></a></p>
                        <?php if ($team_email) : ?><p><a href="mailto:<?php echo $team_email;?>">Email <?php echo $first_name[0]; ?></a></p><?php endif; ?>
                    </div>
                </div> <?php 
            endwhile;
        } 
  }
} 

?>

share|improve this question

1 Answer 1

up vote 0 down vote accepted

You can use this awesome plugin to give a sort order for taxonomy. It's old but still work on WordPress 3.6 and probably the latest version too.

share|improve this answer
    
Thanks for the find @aurevilly. Great plugin indeed - simply worked. I'm hesitant to use 'old' plugins but what can I say - WordPress is awesome with backwards compatibility. –  user27786 Sep 27 '13 at 20:49

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.