WordPress.org

Ready to get started?Download WordPress

Forums

Show X posts randomly from particular Category (4 posts)

  1. Ryan Paul
    Member
    Posted 5 years ago #

    I'm currently trying to display 3 posts from a particular category sorted randomly in my sidebar using a query_post, and then display an image from a custom field value. Currently I have two categories, and the following php:

    <?php
    $args=array(
       'cat'=>3,
       'orderby' => 'rand',
       'showposts' => 3
       );
       query_posts($args);
    ?>
    
    <? if (have_posts()) : while (have_posts()) : the_post(); ?>
    <li><?php $featuredimage = get_post_custom_values("featured-image"); if ( $featuredimage != '' ) { ?>
    <a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><img src="<?php echo get_option('home'); ?>/wp-content/uploads/<?php echo $featuredimage[0]; ?>" alt="<?php the_title(); ?>" title="<?php the_title(); ?>" class="featured-image" /></a>
    <?php } ?></li>
    
    <?php endwhile; else: ?>
    
    <?php _e('Sorry, nothing matched your criteria.'); ?>
    
    <?php endif; ?>

    Sometimes it shows nothing at all, but other times shows the image fine.

    My logic tells me that it's going through all the categories randomly right?

    Can someone tell me how to make this work and show 3 random posts from category 3... ALL THE TIME regardless of whether on a page, post, archive etc?

  2. Ryan Paul
    Member
    Posted 5 years ago #

    I managed to work around this by sorting by the custom field using this:

    <?php query_posts('showposts=3&meta_key=featured-image&orderby=rand'); ?>

    But I'd still like to be able to sort by category. Anyone please?

  3. philippknoll
    Member
    Posted 5 years ago #

    I did the same thing a couple of days ago and it is working fine for me. This is how I did it:

    <?php query_posts('cat=4&showposts=3&orderby=rand'); ?>
    <?php while (have_posts()) : the_post(); ?>
    <? the_title(); ?>
    <? the_content(); ?>
    <?php endwhile; ?>
    <?php wp_reset_query(); ?>

    You need to place the statements in your div containers. The last statement <?php wp_reset_query(); ?> it to reset the query. Without it I ended up having the sidebar posts as the main page's content as well (the main pages query was over-written).

    Hope that helps. Let me know if you need more info...

  4. philippknoll
    Member
    Posted 5 years ago #

    Forgot to mention the custom field. I'd get it using this code before the line <? the_content() ?>. With some css you can have the post nicely wrap around the custom field image.

    <?php global $more;
    $more = 0;
    $custom_field_name = get_post_meta($post->ID,'custom_field_name', true);
    if ($custom_field_name != "") { ?>
    <img src="<? bloginfo('url'); ?>/wp-content/uploads/<? echo strtolower($thumbs); ?>" alt="" class="indexthumb" />
    <? } ?>

Topic Closed

This topic has been closed to new replies.

About this Topic