I’ve done some searches here and on Google but everything I’m finding isn’t working correctly. I was hoping to post my code here and get help with where I’m going wrong.
On the index page of my site, I have one “featured” post that has a different layout than the rest of the posts. When you click to the next page, that featured post goes away and leaves me with an uneven count of posts and I need an even post count. Here’s the code I found and have tried implementing with no joy.
I’m using the following query (everything else is the same at the count code and below):
<?php
$page = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts("paged=$page&posts_per_page=10");
?>
This is the code I want to be able to use:
<?php
$page = (get_query_var('paged')) ? get_query_var('paged') : 1;
$page_num = $paged;
if ($pagenum='') $pagenum = 1;
if ($pagenum > 1) { $post_num = 10 } else { $post_num = 9 }
query_posts('showposts='.$post_num.'&paged='.$page_num); `
?>
This would be the same for the rest of the page:
<?php $count = 1; ?>
<?php while (have_posts()) : the_post(); ?>
<?php if ((!is_paged()) && ($count == 1 )){ ?>
// FEATURED HTML HERE
<?php } else { ?>
// REGULAR HTML HERE
<?php } $count++; ?>
<?php endwhile; ?>
// PAGINATION HERE
You should use the
pre_get_posts
filter. You can exclude the homepage with! is_front_page
or! is_home
depending on your configuration.As I said, you may need to use
! is_front_page
depending on how your theme is set up. Here is a good blog post explaining more on those conditionals.http://wpthemetutorial.com/2011/12/12/clearing-up-confusion-about-is_home-and-is_front_page/
Oh and never use
query_posts
, evar.https://developer.wordpress.com/2012/05/14/querying-posts-without-query_posts/
The logic you came up with in the second snippet makes sense. Nonetheless, there are a couple of things wrong with your code.
For one, the
$pagenum
variable is redundant and you do not need it. For another, you assign the return value ofget_query_var()
to$page
and then in the following lines use$paged
– you want that to be the same. The following should do:Further, in the markup snippet (the 3rd one of your question),
$count
is not needed, you can simply use$paged
as well. As an aside and for the sake of completeness, I would not employ so many php opening and closing tags, but that is a matter of taste and will not influence the functionality of your code.One more: Unless this is your main loop, you should use the
WP_Query
class instead ofquery_posts
. And if it is, the usage ofquery_posts
is not as wrong, but it still would be recommendable you’d check out thepre_get_posts
filter instead.