• I have a column which pulls in the 6 latest posts in a category (shown by a custom image/title), with a separating line between every two. Something weird is happening where the count is broken on the 4th post, and I can’t work out why. Here’s the code:

    <?php
    	$poststoshow = 2;
    	if(is_single()) { $currentpost = get_the_ID(); }
    
    	$posts = get_posts('numberposts='.$poststoshow.'&category=99'); ?>
    
    	<?php
    	foreach ($posts as $post) { 
    
    		setup_postdata($post);
    		static $count1 = 0; 
    
    		if ($count1 == "2") {
    			break;
    		}
    		else { ?>
    			<div class="packshot">FIRST ROW POSTS</div>
    
    			<?php
    			//the_content();
    			$count1++;
    		}
    	} ?><hr class="break" />
    
    	<?php
    	unset($posts);
    	$posts = get_posts('numberposts='.$poststoshow.'&offset='.$count1.'&category=99');
    	?>
    
    	<?php
    	foreach ($posts as $post) {
    
    		setup_postdata($post);
    		static $count2 = 2;
    		if ($count2 == "4") {
    			break;
    		}
    		else { ?>
    			<div class="packshot">SECOND ROW POSTS</div>
    			<?php
    			//the_content();
    			$count2++;
    		}
    	}
    	?><hr class="break" />
    
    	<?php
    	unset($posts);
    	$posts = get_posts('numberposts='.$poststoshow.'&offset='.$count2.'&category=99');
    	?>
    
    	<?php
    	foreach ($posts as $post) {
    
    		setup_postdata($post);
    		static $count3 = 4;
    		if ($count3 == "6") {
    			break;
    		}
    		else { ?>
    			<div class="packshot">THIRD ROW POSTS</div>
    			<?php
    			//the_content();
    			$count3++;
    		}
    	}
    	?>				<hr class="break" />

    With apologies for layout – wasn’t sure how it’d render here.

    So on the 4th post (on the second line), it simply isn’t pulled in. Then, no posts appear after that. If I change the third row code to

    foreach ($posts as $post) {
    
    		setup_postdata($post);
    		static $count3 = 6;
    		if ($count3 == "8") {
    			break;
    		}

    Then posts are pulled in, but two are missing in the middle.

    Changing the static $count pulls in different posts but no matter what I do, there always seems to be one missing. Compare this with the same code used to pull in rows of 3, elsewhere on the site:

    <?php
    $poststoshow = 3;
    if(is_single()) { $currentpost = get_the_ID(); }
    
    $posts = get_posts('numberposts='.$poststoshow.'&category=3'); ?>
    
    <?php
    foreach ($posts as $post) { 
    
    	setup_postdata($post);
    	static $count1 = 0; 
    
    	if ($count1 == "3") {
    		break;
    	}
    	else { ?>
    		<div class="packshot">FIRST ROW POSTS</div>
    
    		<?php
    		//the_content();
    		$count1++;
    	}
    } ?><hr class="break" />
    
    <?php
    unset($posts);
    $posts = get_posts('numberposts='.$poststoshow.'&offset='.$count1.'&category=3');
    ?>
    
    <?php
    foreach ($posts as $post) {
    
    	setup_postdata($post);
    	static $count2 = 3;
    	if ($count2 == "6") {
    		break;
    	}
    	else { ?>
    		<div class="packshot">SECOND ROW POSTS</div>
    		<?php
    		//the_content();
    		$count2++;
    	}
    }
    ?><hr class="break" />
    
    <?php
    unset($posts);
    $posts = get_posts('numberposts='.$poststoshow.'&offset='.$count2.'&category=3');
    ?>
    
    <?php
    foreach ($posts as $post) {
    
    	setup_postdata($post);
    	static $count3 = 6;
    	if ($count3 == "9") {
    		break;
    	}
    	else { ?>
    		<div class="packshot">THIRD ROW POSTS</div>
    		<?php
    		//the_content();
    		$count3++;
    	}
    }
    ?>

    This works perfectly.

    Any ideas? I must be doing something wrong somewhere along the line…

  • The topic ‘Strange $poststoshow and static $count behaviour’ is closed to new replies.