Ranju
Ranju

Reputation: 19

how to add pagination in wordpress

I have posts in different custom taxonomies. I need to display posts for one taxonomy in a page. Now I'm getting the all the posts in all taxonomies in a single page. I have a foreach loop for taxonomy and inside the loop all the posts corresponding to that taxonomy is displaying through post method.I have never used pagination before. How can I add pagination in this case? I am enclosing my code below

<div class="main">

<section class="brands-sec product-sec">
<div class="container">
<?php
$siteurl = home_url('/');
$tax = 'product';  // slug of taxonomy
$terms = get_terms($tax);
foreach ($terms as $term) {
$id = $term->term_id;
$slug = $term->slug;
$description = $term->description;
$image_url = z_taxonomy_image_url( $id, NULL, TRUE ); // category image display
$link = "<a href='$siteurl?$tax=$slug' ><h1> $term->name </h1></a>";

echo '<img src="' . $image_url . '">'; ?>
    <div class="col-md-8 pull-right col-sm-10 pull-right col-xs-12 brnd prdct">

        <img src="<?php echo $image_url ; ?>" class="img-responsive pdt-logo" alt="loyd"/>

        <div class="brand-logos pdt">

        <p><?php echo $description ; ?></p>

                <h4>Product</h4>
             <?php $args = array("posts_per_page" => "-1", "product"=>$slug ,"post_type" => "products" );
$posts = get_posts($args);
foreach($posts as $data){
$thumb = wp_get_attachment_url( get_post_thumbnail_id($data ->ID) );
$custom_fonts = get_post_custom($data->ID);$custom_fonts_key=     $custom_fonts['category'];$custom_fonts_array = $custom_fonts_key[0]; ?>                    
            <div class="row mb40">

                <div class="col-md-4 col-sm-4 col-xs-12 brand-single product-single">
                    <img src="<?php echo $thumb; ?>" class="img-responsive" alt="allegro products"/>
                    <h5><?php echo $data->post_title; ?></h5>
                    <p><?php echo $data->post_content; ?></p>
                </div>
                <div class="col-md-8 col-sm-8 col-xs-12 brand-single product-detail">
                    <ul class="products">
                    <?php 
    $attachments = new Attachments( 'my_attachments',$data->ID ); /* pass the instance name */ ?>
<?php if( $attachments->exist() ) : ?>
<?php while( $attachments->get() ) : ?>
                    <li><img src="<?php echo $attachments->url(); ?>" class="img-responsive" alt="allegro products"/></li>
<?php endwhile; ?>
<?php endif; ?>
                    </ul>


                </div>


            </div>
 <?php } ?>             

        </div><!--end brand-logos-->

     </div><!--end brnd-->
     <?php } ?>

</div>

Here product is custom taxonomy . In that there are more than one terms say loyd,Nycofee,.... In Both these terms there are more than one posts. I need to display posts in loyd in one page and ncofee in next page. How to add pagination in this case?

Upvotes: 0

Views: 1054

Answers (1)

Fahad
Fahad

Reputation: 113

Try this:

You have the post_per_page to be -1

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array("posts_per_page" => "-1", "product"=>$slug ,"post_type" => "products" );

change it to the number you would like. and add to the end

'paged' => $paged

before Ending the PHP here

            </div>
 <?php } ?>             

        </div><!--end brand-logos-->

Add

<?php if (function_exists('wp_pagenavi')) wp_pagenavi(array('query' => $args )); ?>
<?php wp_reset_postdata(); ?>

Here is the basic pagination for wordpress

<?php if ( have_posts() ) : ?>

<!-- Add the pagination functions here. -->

<!-- Start of the main loop. -->
<?php while ( have_posts() ) : the_post();  ?>

<!-- the rest of your theme's main loop -->

<?php endwhile; ?>
<!-- End of the main loop -->

<!-- Add the pagination functions here. -->

<div class="nav-previous alignleft"><?php next_posts_link( 'Older posts' ); ?></div>
<div class="nav-next alignright"><?php previous_posts_link( 'Newer posts' ); ?></div>

<?php else : ?>
<p><?php _e('Sorry, no posts matched your criteria.'); ?></p>
<?php endif; ?>

Soruce: https://codex.wordpress.org/Pagination "Example Loop with Pagination"

If it still show the full list. Try this: http://callmenick.com/post/custom-wordpress-loop-with-pagination

Upvotes: 1

Related Questions