WordPress.org

Ready to get started?Download WordPress

Forums

Multiple Loops, two columns, two categories (12 posts)

  1. jwerner
    Member
    Posted 5 years ago #

    The Goal
    nicefit.ca. Two column home page. Left column: five most recent posts from Category A. Right column: five most recent posts from Category B. At bottom of page is link to Page 2, which has the next five posts from each category. Page 3, the same, and so on.

    So Far
    Two columns, showing posts from two categories (I followed http://codex.wordpress.org/The_Loop#Multiple_Loops ). WordPress shows five posts from each category but only if the posts are distributed evenly, i.e. one post was created in Category A, then another in B, then another in A, etc.

    The Problem
    If, say, four or five posts were created one after another (chronologically) in Category A, then those five posts will appear but the next five from Category B will not. The columns must always display five posts from each category.

    I'm slightly above a beginner WP user, but far from a PHP guru. Much obliged to all replies.

  2. probably_stumped
    Member
    Posted 5 years ago #

    Hi there,

    Did you ever get this sorted?

    Thanks
    Chris

  3. t31os
    Member
    Posted 5 years ago #

    Can you clarify what you want...

    Would this be correct...

    Format: Cat 1 / Cat 2 [ 1 = most recent / 5 = oldest post ]

    [1] [1]
    [2] [2]
    [3] [3]
    [4] [4]
    [5] [5]

    Without having a clear image of what you want it makes it hard to offer any suggestion.

  4. probably_stumped
    Member
    Posted 5 years ago #

    That's correct for me.

    I want this to work for 7 or 8 categories (each one has 2 sub categories)

    OR if I create 2 categories, and then use sub categories to make this work... whichever is easier.

  5. t31os
    Member
    Posted 5 years ago #

    So where are you having problems, what pages have you consulted for guidance, and what code have you tried?

  6. ishstar
    Member
    Posted 4 years ago #

    What if you only want one category and 2 columns with 8 most recent post?

    [1] [5]
    [2] [6]
    [3] [7]
    [4] [8]

    What does this code look like?

  7. t31os
    Member
    Posted 4 years ago #

    Something along these lines proberly... (untested - just written for example)..

    <?php if(have_posts());
    $varc = 0;?>
    <div class="container">
    <?php while(have_posts()) : the_post; ?>
    <?php $varc++; ?>
    <div class="postdiv">
    
    Other stuff that's usually inside the loop...
    
    </div>
    <?php if($varc=4) { print '</div><div class="newcontainer">'; } ?>
    <?php endwhile; ?>
    </div>
    <?php endif; ?>

    Basically you count the results as you go, when you reach the forth result you place a closing and opening div after the post...

    Which then give you 2 boxes...

    Box1

    post 1
    post 2
    post 3
    post 4

    followed by box2..

    post 5
    post 6
    post 7
    post 8

    You'd then adjust the CSS classes for the 2 boxes (whatever you want to call em). Floating them side by side would be the most obvious answer...

    I can give a table based example if preferred.

    If you want further help i can run some test code to make sure what's offered is a working example...

  8. ishstar
    Member
    Posted 4 years ago #

    Thank You!

  9. JohnPope
    Member
    Posted 4 years ago #

    I think that what you are both trying to do is what I have done, call the last x number of posts from a category and put them onto the front page. See: http://johnonfood.com

    This code should work irrelevant of whether the posts are of an even number in the categories or not.

    I have it working with 6 categories on my site, but it should work with any number, the more you use the slower it will be of course.

    <?php query_posts('category_name=THEFIRSTCATEGORY&amp;showposts=5'); ?>
    <?php if (have_posts()) : ?>
    <?php while (have_posts()) : the_post();
    		if( $post->ID == $do_not_duplicate ) continue; update_post_caches($posts); ?>
    
    <?php the_title(); ?>
    
    <?php endwhile; ?>
    <?php endif; ?>

    Repeat this wherever you want to display posts from a set category.

    Change THEFIRSTCATEGORY in the example above to the category name, and the showposts=5 to whatever number of posts you want to show.

    This would show just the title of the post, without an excerpt or the text of the post, but you can add that using php the_content() if you wish.

    Hope this helps.

  10. chrisauman
    Member
    Posted 4 years ago #

    John, this worked great. I wanted to add one post from one category (featured news) at the top of my homepage and then have all my regular blog posts appear under that. It worked like a charm.

    FYI...just to clarify this for others, this change happens in your index.php file. Here is the code that I used to accomplish this.

    <?php query_posts('category_name=featurednews&showposts=1'); ?>
    <?php if (have_posts()) : ?>
    <?php while (have_posts()) : the_post();
    if( $post->ID == $do_not_duplicate ) continue; update_post_caches($posts); ?>

    <div <?php post_class() ?> id="post-<?php the_ID(); ?>">
    <h2>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></h2>
    <div id="date"><?php the_time('F jS, Y') ?> <!-- by <?php the_author() ?> --></div>

    <div class="entry">
    <?php the_content('Read the rest of this entry »'); ?>
    </div>
    <!--

    <p class="postmetadata"><?php the_tags('Tags: ', ', ', '
    '); ?> Posted in <?php the_category(', ') ?> | <?php edit_post_link('Edit', '', ' | '); ?> <?php comments_popup_link('No Comments »', '1 Comment »', '% Comments »'); ?></p>

    --> </div>

    <?php endwhile; ?>
    <?php endif; ?>

    <?php query_posts('category_name=blog&showposts=5'); ?>
    <?php if (have_posts()) : ?>

    <?php while (have_posts()) : the_post(); ?>

    <div <?php post_class() ?> id="post-<?php the_ID(); ?>">
    <h2>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></h2>
    <div id="date"><?php the_time('F jS, Y') ?> <!-- by <?php the_author() ?> --></div>

    <div class="entry">
    <?php the_content('Read the rest of this entry »'); ?>
    </div>
    <!--

    <p class="postmetadata"><?php the_tags('Tags: ', ', ', '
    '); ?> Posted in <?php the_category(', ') ?> | <?php edit_post_link('Edit', '', ' | '); ?> <?php comments_popup_link('No Comments »', '1 Comment »', '% Comments »'); ?></p>

    --> </div>

    <?php endwhile; ?>

  11. JohnPope
    Member
    Posted 4 years ago #

    Glad it worked Chris!

  12. wmassingham
    Member
    Posted 4 years ago #

    Thanks, John! That worked beautifully and painlessly. :)
    All I did was tack
    <?php query_posts('category_name=News&amp;showposts=5'); ?>
    onto the top of my loop. :D

Topic Closed

This topic has been closed to new replies.

About this Topic

Tags

No tags yet.