WordPress.org

Ready to get started?Download WordPress

Forums

Wp-Query pagination and offeset (9 posts)

  1. eamania
    Member
    Posted 3 years ago #

    Hi, I have a problem with a WordPress site. I'm using "page numbers" plugin to browse the pages.

    This site is divided into two parts: top news / articles Displayed are large, while the news shown at the bottom are "small". As for the top the page works perfectly with this code:

    <?php
    $temp = $wp_query;
    $wp_query= null;
       $wp_query = new WP_Query();
       $wp_query->query('showposts=3'.'&paged='.$paged);
    ?>

    Now for the bottom I used this:

    <?php
    $temp = $wp_query;
    $wp_query= null;
       $wp_query = new WP_Query();
       $wp_query->query('showposts=3'.'&offset=3'.'&paged='.$paged);
    ?>

    But when I change page will always display the same items.

  2. Mark / t31os
    Moderator
    Posted 3 years ago #

  3. eamania
    Member
    Posted 3 years ago #

    i would like to obtain a result like http://www.makemydaymag.com for example" where last 3 post are at the top of the page and are "big" while the other are disposed on two columns and are smaller. Morever I would combine this layout type with a paging

  4. MaviDeve
    Member
    Posted 3 years ago #

    After trying every bit of code about paging bug (I still believe there is a bug ...) I am in desperately need of help ...

    I will explain situation clearly to make it easy ... (Sry for bad english ...)

    Scenario
    ==========
    index.php file which have multiple custom queries to show different number of posts for each categories. No Permalink structure and using a custom pagination function in functions.php to make blog paginated.

    index.php code :

    <?php
    
    	$category = $wp_query->get('cat');
    	$tag = $wp_query->get('tag');
    	$paged = ( get_query_var('paged') && get_query_var('paged') > 1 ) ? get_query_var('paged') : 1;
    	$maxpage = $wp_query->max_num_pages;
    
    	if ($category == 4) {
        		get_header(); query_posts($query_string.'cat=4&posts_per_page=2&paged='.$paged);
    		} elseif ($category == 3) {
        		get_header(); query_posts($query_string.'cat=3&posts_per_page=5&paged='.$paged);
    		} elseif (!($tag==NULL)) {
        		get_header(); query_posts($query_string.'tag='.$tag.'&posts_per_page=5&paged='.$paged);
    		} else {
        		get_header(); query_posts($query_string.'&posts_per_page=10&paged='.$paged);
    	}
    ?>

    Create a Custom Query for Featured Content ...

    <?php
    			$PostCount=0;
    			global $post;
    			$tmp_post = $post;
    			$myposts = get_posts('numberposts=14&category=4');
    			foreach($myposts as $post) :
    			setup_postdata($post);
    			$PostCount++;
    			$Library_Thumbnail=get_post_meta($post->ID,'library_thumb',true);
    		?>

    After the featured content loop, I am using default loop to show category records, and then the output of custom pagination function.

    So, in my case ... if a user navigates to category 3, post per page should be limited to 5 which is declared by the conditional tag on top of index.php. So if category 3 has 33 posts ; pagination should return 7 pages.

    Up to here ; everything is normal, but when I navigate to page 5, I got a 404 error ...

    I am sure it is the global variable in reading pane of admin panel which causes this error to happen, but I can not make it work.

    I think I have to find a way to bypass the global option, but can not figure out a way to make it happen.

  5. Mark / t31os
    Moderator
    Posted 3 years ago #

    Why do all that conditional logic in your index.php file when you could be using category templates to seperate those queries into appropriate files..

    Same can be said for tag queries..

    You may also wish to try merging query parameters, and avoiding passing in parameters you're not explicitly setting, such as $paged, $tag... etc..

    $args = array( 'posts_per_page' => 5 );
    $args = array_merge( $args, $wp_query->query );
    query_posts( $args );

    Appropriately placed into a category/tag template, you'll not need to pass in all those other parameters..

  6. MaviDeve
    Member
    Posted 3 years ago #

    Mark, first of all thanks for ur kind reply ...

    I didnt mention it ; but I have tried category templates before ...
    BTW, I am in degub mode at the moment, and it becomes clear for me to see everything in index.php for a while.

    If I can make pagination work and do not produce 404 errors, I will make the code more efficient with category templates. But for a while category templates issue doesnt make any sense.

    For example ; I have only one category with ID 3 and 40 posts in it. So, logically when I set a posts per page limit of 5 for wp_query variable, and use a conditional tag in index.php to show all posts from category 3, there has to be 8 pages ...

    wp_query max_num_pages variable returns value of 8, which is theorically true for my case, so my custom pagination function returns page numbers from 1 to 8 as expected ...

    So ; up to this point ... $posts_per_page, $paged and $max_num_pages variables acts as expected, and custom pagination function which also generates page listing with these query variables works as expected too ...

    Here ... The problem comes out ...
    I have 8 pages of posts grouped by 5, with page numbers from 1 to 8. Everything went OK until I navigate to page 5. Page 5 redirects me to 404.php. And also wp_title generates a 404 too. Instead of using wp_query variables which are all set to their expected values doesnt make any sense. WP still uses "Blog pages show at most" value taken from reading pane to generate 404s ...

    So when I click over page 5, (which shouldnt exist there due to the limit in reading pane (40/10 = 4)) it generates a 404.

    What if there is no 404 template ; EVERYTHING works fine except the wp_title errors which are not so SEO Friendly.

    So this is the situation ...
    Any ideas are welcome ...

  7. MaviDeve
    Member
    Posted 3 years ago #

    Instead of using wp_query variables which are all set to their expected values doesnt make any sense. WP still uses "Blog pages show at most" value taken from reading pane to generate 404s ...

    it was silly ... Instead of using wp_query variables which are all set to their expected values, WP still uses "Blog pages show at most" value taken from reading pane to generate 404s ...

  8. crazyalcayne
    Member
    Posted 3 years ago #

    '&paged= <----That was the missing ingredient for me, now it's working fine for me.

    I was having the same problem with the same content showing up on my following pages.

    Thanks!

  9. DR2000
    Member
    Posted 3 years ago #

    MaviDeve,

    Where you able to get this resolved? I'm having exactly the same issue and also came to the conclusion that WP decides to load 404 page based on the value set in admin panel and basically ignores all the custom template settings.

    I posted about it here: http://wordpress.org/support/topic/pagination-issues-problematic-logic-explanation-and-suggested-solutions?

    I've done a lot of searching, but so far no luck.

Topic Closed

This topic has been closed to new replies.

About this Topic