WordPress.org

Ready to get started?Download WordPress

Forums

[resolved] query_posts ORDERBY not actually ordering properly (4 posts)

  1. 11Mystics
    Member
    Posted 5 years ago #

    I have a page (using a page template with no loop) that fetches all posts from category 39. There are 11 child categories in category 39 that automatically get pulled in with this code:

    <?php query_posts("cat=39&showposts=-1&orderby=category"); ?>

    I need to order them by category coming in because the next bit of code on my page spits them out with category headings like this where the category title is only shown once on the page and all posts in that category are displayed under it.

    CATEGORY 1 NAME
    Post Name
    Post Name
    Post Name

    CATEGORY 2 NAME
    Post Name
    Post Name
    Post Name

    CATEGORY 3 NAME
    Post Name
    Post Name
    Post Name

    <?php if (have_posts()) : ?>
    	<?php while (have_posts()) : the_post(); ?>
    		<?php setup_postdata($post);
    			$title = get_the_title();
    			$category = get_the_category();
    			$category = $category[0]->cat_name;
    		?>
    
    		<?php if ($category != $previous_category) : ?>
    
    			<?php if($ul_open == true) : ?>
    				</ul>
    			<?php endif; ?>
    
    			<h5 class="spitcat-title"><?php echo $category; ?></h5>
    			<ul class="spitposts">
    			<?php $ul_open = true; ?>
    
    		<?php endif; ?>
    
    		<?php $previous_category = $category; ?>
    
    				<li>Stuff</li>
    
    	<?php endwhile ?>
    
    			</ul>
    
    <?php endif; ?>

    This solution WAS working in my local MAMP installation, but when I moved the data and the theme to the web server, it no longer worked. The order of the posts is NOT coming in by category because now I'm getting this, a situation where the category title is showing up multiple times on the page.

    CATEGORY 3 NAME
    Post Name

    CATEGORY 1 NAME
    Post Name

    CATEGORY 2 NAME
    Post Name
    Post Name

    CATEGORY 1 NAME
    Post Name

    CATEGORY 3 NAME
    Post Name
    Post Name
    Post Name

    I'm confused as to why the ORDERBY suddenly isn't working - it works in my local instance - so any insights into this would be great. A better solution like a function I can drop in my functions.php would be better but I was not able to find one.

  2. MichaelH
    Member
    Posted 5 years ago #

    Your code works for me, but didn't on another blog. After checking seems the query_posts 'orderby=category' is broken.

    Try this:

    <?php
    //get categories, if category has posts, get a post in that category and display it
    $categories=get_categories('child_of=39&orderby=name');
    if ($categories) {
      foreach($categories as $category) {
        if ($category->count > 0) {
          echo 'Category <a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $category->name ) . '" ' . '>' . $category->name.'</a> has ' . $category->count . ' post(s).
     ';
          $number_posts_per_category = 0; // set =0 to see all posts in the category
          $posts=get_posts('cat='. $category->term_id .'&showposts='.$number_posts_per_category);
          foreach($posts as $post) {
            setup_postdata($post); ?>
            <a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a>
    
            <?php the_content();
          } // foreach($posts
        } // if ($category->count > 0
      } // foreach($categories
    } // if ($categories
    ?>

    Please note I followed this convention:
    By WordPress standards, ANY category that has been designated a Parent category, is not meant to be checked in the Category hierarchy when writing posts. Meaning, only the lastest generation category should be checked.

    It's okay to have multiple categories assigned a post, as long as the other categories are not designated as parents. Think of it like this, only the youngest generation gets the action.

    Reported problem on trac ticket http://core.trac.wordpress.org/ticket/9228

  3. 11Mystics
    Member
    Posted 5 years ago #

    Thanks for the info Michael - I'll try your new solution.

    I think the original worked for me in one instance because the posts were inserted into my offline database based on category order, but online, they were not. Don't quote me on that. It's a suspicion only.

  4. 11Mystics
    Member
    Posted 5 years ago #

    Michael - I'm finally getting back to this piece of my site build and I really have to thank you for this piece of code. This not only works but it provided a very graceful solution beyond what I was even assuming.

    Thank you a whole big bunch! :) I owe you.

Topic Closed

This topic has been closed to new replies.

About this Topic

Tags