'Pagination in custom archive.php page
I have created a custom archive.php
page by adding some extra code to the default archive.php
. I want to do pagination in that page but I don't know why it is not working.
I use wp-pagenavi
plugin for pagination. It shows the page not found
error when I click on the 2nd page. To be more understandable I am posting an image of what is happening.
The image below is what happens when the page loads. You can see the site address which I have marked in red:
Next is the image of what happens when I click on '2' to navigate to the 2nd page. As you can see the URL is ../?m=201303&paged=2
.
Below is the code I use for the custom archive page:
<?php
get_header(); ?>
<div class="archive_page">
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array_merge( $wp_query->query,
array( 'cat' =>'-1,-8,-9',
'posts_per_page'=>'2',
'paged' =>$paged));
query_posts( $args );
?>
<?php if ( have_posts() ) : ?>
<header class="page-header">
<h1 class="page-title">
<?php if ( is_day() ) : ?>
<?php printf( __( 'Daily Archives: %s', 'twentyeleven' ), '<span>' . get_the_date() . '</span>' ); ?>
<?php elseif ( is_month() ) : ?>
<?php printf( __( 'Monthly Archives: %s', 'twentyeleven' ), '<span>' . get_the_date( _x( 'F Y', 'monthly archives date format', 'twentyeleven' ) ) . '</span>' ); ?>
<?php elseif ( is_year() ) : ?>
<?php printf( __( 'Yearly Archives: %s', 'twentyeleven' ), '<span>' . get_the_date( _x( 'Y', 'yearly archives date format', 'twentyeleven' ) ) . '</span>' ); ?>
<?php else : ?>
<?php _e( 'Blog Archives', 'twentyeleven' ); ?>
<?php endif; ?>
</h1>
</header>
<div id="navig">
<?php if (function_exists('wp_pagenavi')){wp_pagenavi();}?>
</div>
<?php while ( have_posts() ) : the_post(); ?>
<div id="all_posts">
<div id="auth_ava">
<?php echo get_avatar( get_the_author_email(), '65');?>
</div>
<div class="post_title_archive">
<?php
the_title();
?>
</div>
<div id="name_date_coment_tag">
<div id="auth_dis_name">
<?php the_author_posts_link();?>
</div>
<div class="border">|</div>
<div id="posted_date_archive">
<?php
the_time('F j, Y');
?>
</div>
<div class="border">|</div>
<div class="categories">
Categories: <?php the_category(', '); ?>
</div>
<div class="border">|</div>
<div id="tags_archive">
<?php
the_tags('Tags: ', ', ', '<br />');
?>
</div>
</div>
</div>
<div class="excerpt_archive">
<?php
the_excerpt();
?>
</div>
<?php endwhile; ?>
<div id="navig">
<?php if (function_exists('wp_pagenavi')){wp_pagenavi();}?>
</div>
<?php else : ?>
<article id="post-0" class="post no-results not-found">
<header class="entry-header">
<h1 class="entry-title"><?php _e( 'Nothing Found', 'twentyeleven' ); ?></h1>
</header>
<div class="entry-content">
<p><?php _e( 'Apologies, but no results were found for the requested archive. Perhaps searching will help find a related post.', 'twentyeleven' ); ?></p>
<?php get_search_form(); ?>
</div>
</article>
<?php endif; ?>
</div>
<?php get_footer(); ?>
I am really sorry for a long question. I hope it is clear what I want to achieve.
Solution 1:[1]
Just try with the following :
<?php
//the query using arguments above
$wp_query = new WP_Query( $args );
//use the query for paging
$wp_query->query_vars[ 'paged' ] > 1 ? $current = $wp_query->query_vars[ 'paged' ] : $current = 1;
//set the "paginate_links" array to do what we would like it it. Check the codex for examples http://codex.wordpress.org/Function_Reference/paginate_links
$pagination = array(
'base' => @add_query_arg( 'paged', '%#%' ),
//'format' => '',
'showall' => false,
'end_size' => 4,
'mid_size' => 4,
'total' => $wp_query->max_num_pages,
'current' => $current,
'type' => 'plain'
);
//build the paging links
if ( $wp_rewrite->using_permalinks() )
$pagination[ 'base' ] = user_trailingslashit( trailingslashit( remove_query_arg( 's', get_pagenum_link( 1 ) ) ) . 'page/%#%/', 'paged' );
//more paging links
if ( !empty( $wp_query->query_vars[ 's' ] ) )
$pagination[ 'add_args' ] = array( 's' => get_query_var( 's' ) );
//run the query
if ( $wp_query->have_posts() ) : while ( $wp_query->have_posts() ) : $wp_query->the_post();
?>
Also refer the following locations :
https://wordpress.stackexchange.com/questions/32100/pagination-on-a-custom-page-template
And
http://wordpress.org/support/topic/custom-post-type-archive-page-pagination-isnt-working
I think this may help you to resolve your problem.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Community |