Forums

Excluding Posts Using a Variable Between Functions (12 posts)

  1. apascal
    Member
    Posted 2 years ago #

    Hi,

    I don't have much knowledge in PHP so I'm not exactly how to do this. I have a Custom Query that displays 5 posts that have a certain meta value (featured posts). On the same page, I have a regular old Loop. I would like to exclude the posts displayed in the Custom Query from the Loop. Another problem is that the Custom Query and The Loop are in different functions in the functions.php file so variable values don't carry over between the two.

    Any help would be greatly appreciated!

  2. ambrosite
    Member
    Posted 2 years ago #

    You could try something like this in your main loop:

    <?php
    while (have_posts()) : the_post();
    $postmeta = get_post_custom($post->ID);
    if ( $postmeta['featured'][0] == 'yes' ) continue;
    rest of loop code here ...
    endwhile;
    ?>

  3. apascal
    Member
    Posted 2 years ago #

    Hmm... that didn't work. After I applied that, nothing showed up at all from the Loop. Any other ideas?

  4. ambrosite
    Member
    Posted 2 years ago #

    What exactly is the meta value for your featured posts?

  5. apascal
    Member
    Posted 2 years ago #

    // 'The Loop' Posts
    function com_post() {
    
    	global $post, $posts, $com_posts, $featured_ID;
    
    	if (have_posts()) : while(have_posts()) : the_post();
    
    		loop code goes here...
    
    	}
    
    	endwhile;
    
    	endif;
    
    }
    
    // Featured Slider Posts
    function com_featured() {
    
    	global $post, $posts, $com_featuredPostsNum;
    
    	$args = array(	'meta_value'=> 'on',
    			'meta_key'=> 'featured_value',
    			'post_type' => 'post',
    			'post_status' => 'publish',
    			'posts_per_page' => $com_featuredPostsNum,
    			'caller_get_posts'=> 1
    		     ); 
    
    	$featured = null; $featured = new WP_Query($args); 
    
    	if ($featured->have_posts()) { 
    
            while ($featured->have_posts()) : $featured->the_post(); $featured_ID = $post->ID; 
    
    		loop code goes here...
    
    	endwhile;
    
    	} wp_reset_query();
    
    }

    How can I exclude the posts displayed in the featured post query from the general Loop? These functions are in functions.php by the way.

  6. ambrosite
    Member
    Posted 2 years ago #

    Did you substitute your actual meta key and value into the code to make it work?

    <?php
    while (have_posts()) : the_post();
    $postmeta = get_post_custom($post->ID);
    if ( $postmeta['featured_value'][0] == 'on' ) continue;
    rest of loop code here ...
    endwhile;
    ?>

  7. apascal
    Member
    Posted 2 years ago #

    Thanks, it works now! There's a side-effect to that though. For example, if in the Settings it's set to display 5 entries per page, and 3 of those entries are "featured" posts, only 2 entries show up instead of 5 non-featured post showing up.

    I'm sure there's an easy fix to that. Any help?

  8. ambrosite
    Member
    Posted 2 years ago #

    You could put this before the loop to increase the number of posts:

    query_posts('posts_per_page=8');

  9. apascal
    Member
    Posted 2 years ago #

    Well, the thing is, this a theme that will be sold so as a developer, I don't know how many posts will be set to be displayed on the homepage. That being said, I also don't know how many featured posts will be set, and of the number that is set, how many will actually have the "featured" meta value.

  10. ambrosite
    Member
    Posted 2 years ago #

    Unfortunately, I cannot think of an easy solution off-hand (which is not to say there might not be one).

  11. ambrosite
    Member
    Posted 2 years ago #

    Maybe the best solution is to forget everything I said, and use WP_Query to create a custom main loop that only includes non-featured posts.

  12. apascal
    Member
    Posted 2 years ago #

    How would I do that? I can just do a WP_Query that lists posts that don't have the meta value but then if in the database there are more "featured" posts than what the user specifies to be displayed in the slider, they will just not appear anywhere.

Topic Closed

This topic has been closed to new replies.

About this Topic