Support » Fixing WordPress » Display posts from a specific category in the sidebar

  • Resolved krez

    (@krez)


    Hello,

    I’ve seen numerous posts here about this issue, but none have had a clear answer that works. What I’d like to do is display, in my sidebar, a list of posts from 1 specific category. Of course I’d like to also be able to control how many posts are listed, and have the titles be clickable to each post.

    Someone in another thread posted the following code, which *almost* works, but spits back a syntax error when I try to use it:

    <ul>
     <?php
     global $post;
     $myposts = get_posts('numberposts=5&offset=1&category=1');
     foreach($myposts as $post) :
     setup_postdata($post);
     ?>
    
    <li><a>"><?php the_title(); ?></a>
     </li>
    </ul>

    Any ideas of how to modify the above to my needs, or, alternately, a different method altogether?

    Thanks much.

    -ben

Viewing 8 replies - 1 through 8 (of 8 total)
  • Hola krez.

    If you want to display in the sidebar, posts from the same category than the post you are reading, this code should work :

    <?php $cat = get_the_category(); $cat = $cat[0]; ?>
    <?php
    query_posts(array(
    'cat'=> $cat->cat_ID,
    'showposts'=>'5',
    ) );
    ?>
    <?php while (have_posts()) : the_post(); ?>
    --- DO YOUR STUFF (list titles, authors, date, etc ---
    <?php endwhile; ?>

    Note the :
    'showposts'=>'5'

    Wich is self explain… Juste change the number to display the nuber of post you want.

    To display posts from any category you want, anywhere you like, just read the documentation :

    http://codex.wordpress.org/Template_Tags/query_posts

    You need a query_posts before your loop :

    <?php query_posts('cat=21&showposts=5'); ?>
    <?php while (have_posts()) : the_post(); ?>
    --- DO YOUR STUFF (author, date, title link, etc.) ---
    <?php endwhile; ?>

    In this example, you show 5 posts from the category 21…

    S.

    More code samples and examples at Adding_Asides in the codex as well.

    HandySolo,

    Thanks so much for the tips. I still can’t seem to get it right — always get back a syntax error.

    What I’m trying to do is like in your second example; to make a list of posts from any category, anywhere i like (this case in the sidebar).

    The above code you’re suggesting that i put in before the loop — does that go in my index.php or my sidebar.php file?

    Do I then have to insert a specific php call in my sidebar (and if so, what is it?

    Thanks so much for your time.

    -ben

    If you want something appear in the side bar, then yes, you have to place it in your side bar…

    1- What is the syntax error you get ?

    2- What theme do you use ?

    S.

    SimonJ,

    Actually at this point I’m not getting a syntax error but something else odd altogether. I put the following code as the first 2 lines in my sidebar.php file:

    <?php query_posts('cat=6&showposts=5'); ?>
    <?php while (have_posts()) : the_post(); ?>

    And the following as the last line in sidebar.php:

    <?php endwhile; ?>

    Not only does the list of posts from that category not show up anywhere, but the whole site is called “Interviews” (the name of Category 6).

    What am I doing wrong?

    i am using a modified version of the Kubrick theme.

    thanks so much for your time.

    -ben

    Ok… I see…

    Put this code just after your <?php endwhile; ?> :

    <?php wp_reset_query(); ?>

    Tell me if it works…

    =======

    But just to be clear, the <?php endwhile; ?> doesn’t need to be placed at the last line of your sidebar… Put it right after the loop for your category… Just like a classic loop (look in your index.php, or even single.php how the loop is done)

    <?php query_posts('cat=6&showposts=5'); ?>
    <?php while (have_posts()) : the_post(); ?>
    --- DISPLAY STUFF FOR EACH POSTS IN CAT 6
    (author, date, title, link, etc.) ---
    <?php endwhile; ?>

    …Then, the rest of the stuff of your side bar…

    S.

    Not only does the list of posts from that category not show up anywhere, but the whole site is called “Interviews” (the name of Category 6).

    Hum… Sorry, I just note that I didn’t answer your first problem…

    If you only wrote :

    <?php query_posts('cat=6&showposts=5'); ?>
    <?php while (have_posts()) : the_post(); ?>

    Nothing will show up… ;-)… When I wrote, as in the codex “DISPLAY YOUR STUFF” or “DO YOUR STUFF”, it means to put there the tags you want for each posts…

    For instance :

    <ul>
    <?php query_posts('cat=6&showposts=5'); ?>
    <?php while (have_posts()) : the_post(); ?>
    <li><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></li>
    <?php endwhile; ?>
    </ul>

    In this example, in english :

    1- We start a list : (ul)
    2- We ask to retreive 5 posts from category 6 : query_posts
    3- While we display each posts
    4- For each of them, open a list item (li)
    5- Make a link with the title (a href… the permalink, the title…)
    6- Close the list item (/li)
    7- Stop what we are doing while we display the posts (enwhile)
    8- close the list (/ul)

    Try this code above as is and tell me if it dispaly a list of the posts you want…

    S.

    Simon,

    Very nice — both suggestions worked. Your first post solved the problem of displaying the category name in the site title, and your second post did the trick to make a list in the sidebar.

    Thank you very much for your help!

    -ben

Viewing 8 replies - 1 through 8 (of 8 total)
  • The topic ‘Display posts from a specific category in the sidebar’ is closed to new replies.