I've created a custom post type which now has around 100 posts in it. I simply want to display these in alphabetical order by the post title rather than the default which seems to be most recent first. I've tried various plugins and other solutions, but most only allow manual sorting (too many posts for that to work), I'm told that the code below should work but it seems to have no effect at all.

Any help appreciated.

    $args = array( 'post_type' => 'tenant', 'posts_per_page', 'orderby=title&order=ASC' => 5 );
    $loop = new WP_Query( $args );
    while ( $loop->have_posts() ) : $loop->the_post();

2 Answers 2


try this:

$args = array( 'post_type' => 'tenant', 'posts_per_page'=>5, 'orderby'=>'title','order'=>'ASC');
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();

You will find more info o custom queries here: http://codex.wordpress.org/Class_Reference/WP_Query

  • Nice solution. Makes the hour I just spent reading docs seem like a waste of time :) Aug 4, 2013 at 22:08
  • Yeah!! it worked. Me too spent rading docs but here i got the solution. Jan 18, 2019 at 16:17

I realize this is an old thread, but I came across it trying to do the same thing and settled on adding a pre-query action using functions.php rather than a template and the loop.

In my case; I have a page of about 25 yoga classes, set up as a custom post type 'classes'

// function and action to order classes alphabetically

function alpha_order_classes( $query ) {
    if ( $query->is_post_type_archive('classes') && $query->is_main_query() ) {
        $query->set( 'orderby', 'title' );
        $query->set( 'order', 'ASC' );

add_action( 'pre_get_posts', 'alpha_order_classes' );

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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