3

I am trying to sort posts by custom taxonomy. I have a custom post type which is course-cpt and I have created custom taxonomies within it, I need to sort the courses by course-level (which is the taxonomy term) so that it displays like so:

  • Course Name level 1
  • Course Name level 2
  • Course Name level 3 etc

I currently have the following in my functions.php:

add_action( 'pre_get_posts', 'reorderByCourseLevel' );

function reorderByCourseLevel( $query ) {

if ( $query->is_main_query() && !is_admin() ) {
        if ( $query->is_tax() || $query->is_post_type_archive('subject') ) {
            $taxquery = array(
               'taxonomy' => 'course-level'
            );
            $query->set('tax_query', $taxquery);
            $query->set('orderby', 'title');   
            $query->set('order', 'ASC');
       }       
    }
}

Am I missing anything in my code..?

2
  • I think are trying to sort taxonomy terms, not posts by taxonomy. It can be confusing but they are very different concepts. I mean, you want to sort taxonomy terms by title, then group posts by taxonomy term (maybe with some specific order for posts within each group).
    – cybmeta
    Jul 17, 2017 at 9:29
  • 1
    Possible duplicate of Using wp_query is it possible to orderby taxonomy?
    – Johansson
    Jul 17, 2017 at 16:53

1 Answer 1

-1

If I understand your question correctly, I think I may have your answer in this blog post: https://evowebdev.com/2017/05/using-a-dropdown-menu-to-filter-a-custom-post-type-with-custom-taxonomy/

This solution specifically uses select form element auto-populated with taxonomy terms to sort CPT posts (ie, rather than presorting posts with pre_get_posts, it lets site visitors sort by the taxonomy term[s] they select). If it's really important to pre-sort, this may not be an answer for you.

I could see it being useful, however, to allow people to select to view all courses of one of the levels.

That said, wouldn't the following presentation occur with alpha order?

  • Course Name level 1
  • Course Name level 2
  • Course Name level 3

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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