web-dev-qa-db-fra.com

La pagination ne fonctionne pas sur single- {slug} .php mais fonctionne très bien sur page- {slug} .php

Je souhaite que mon single- {slug} .php effectue une requête sur une liste de publications de différents types de publications personnalisées et utilise la pagination. La pagination apparaît, mais malheureusement, cliquer sur la pagination ne permet pas d'accéder à cette page et reste toujours à la page 1. Utilisation de WP-navi, btw.

Exemple: chargez la liste des publications de single-sports.php dans single-movies.php

Tout conseil ou aide serait apprécié.

Voici mon single- {slug} .php:

<?php
         $args = array(
                       'post_type' => 'crew',
                       'paged' => ( get_query_var('paged') ? get_query_var('paged') : 1),
                       );


    while (have_posts()) : the_post();
     /* Do whatever you want to do for every page... */
    ?>
        <div class="project_item">
            <div class="dotted">
              <hr />
            </div>
            <div class="project_thumb"><a href="<?php echo get_permalink(); ?>"><img src=""  /></a></div>
            <div class="project_entry"><h4><a href="<?php echo get_permalink(); ?>"></a></h4>

              <a href="<?php echo get_permalink(); ?>" class="readmore">Read more..</a> </div>
          </div>

          <?php

    endwhile;
    ?>
    <nav>
    <?php wp_pagenavi(array('query'=>$post_query)); ?>
    </nav>

    <?php
    wp_reset_query();  // Restore global post data
    ?>

Voici mon functions.php:

$labels = array(
'name' => _x('Crew', 'post type general name'),
'singular_name' => _x('A crew', 'post type singular name'),
'add_new' => _x('Add A New Crew', 'crew'),
'add_new_item' => __('Add A New Creww'),
'edit_item' => __('Edit Crew'),
'new_item' => __('New Crew'),
'view_item' => __('View Crew'),
'search_items' => __('Search Cre'),
'not_found' => __('Crew Not Found'),
'not_found_in_trash' => __('Not found in trash'),
'parent_item_colon' => ''
);

$args = array(
'labels' => $labels,
'menu_position' => 6,
'public' => true,
'supports' => array('title', 'editor', 'thumbnail'),
'capability_type' => 'post',
'hierarchical' => true,
'has_archive' => true,
);

register_post_type('crew',$args);

$args = array(
'label' => 'Author Catefory',
'public' => true,
'show_ui' => true,
'hierarchical' => true
);
register_taxonomy('crew_tax','crew',$args);
2
PM8329

Vous avez oublié de lancer une nouvelle requête.

Et si vous n'utilisez pas post sur votre requête personnalisée, vous obtiendrez la requête principale actuelle, dans votre cas, c'est votre requête.

$args = array(
       'post_type' => 'crew',
       'posts_per_page' => 10
       );

$your_custom_query = new WP_Query( $args ); // is that you forgot

// The Loop
if ( $your_custom_query->have_posts() ) :
while ( $your_custom_query->have_posts() ) : $your_custom_query->the_post();
  // Do Stuff
endwhile;
endif;

je ne sais pas ce qui est wp_pagenavi ()

utilisez paginate_links ()

$big = 999999999; // need an unlikely integer
$pagination_args = array(
            'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
            'format' => '?paged=%#%',
            'current' => max( 1, get_query_var('paged') ),
            'total' => $your_custom_query->max_num_pages,
            'type' => 'plain',
            'prev_text' => 'Prev',
            'next_text' => 'Next'
        );

echo(  paginate_links( $pagination_args )  );

Et terminer par une réinitialisation

wp_reset_postdata();
3
Jérome Obbiet