8791 sujets

Développement web côté serveur, CMS

Bonjour,
J'ai un problème concernant ma fonction de pagination. Elle marche très bien avec mes fichiers archives.php, taxonomy.php, mais ne fonctionne pas sur mon modèle de page personnalisé.
Voici le code de mon modèle de page spécifique :
<?php
/*
  Template Name: Page Spécifique
 */
?>
<?php get_header(); ?>   
<div class="wrap">
<!-- Start Content-left-->  
        <div id="content-left">
        <?php if(have_posts()): while(have_posts()) : the_post(); ?>
        <?php the_content();?>
        <?php endwhile; endif; wp_reset_query(); ?>
        <?php 
                            $theme = new WP_query(array(
                            'post_type' => 'theme',
                            'taxonomy' => 'cms',
                            'term' => 'wordpress',
                            'posts_per_page' => 4,
                        ));
                        if($theme->have_posts()) : while ($theme->have_posts()) : $theme->the_post(); ?> 
                         
                        <div class="posthome">
                            <strong><?php the_title(); ?></strong>
                            <a href="<?php the_permalink(); ?>"><?php echo the_post_thumbnail('thumb'); ?></a>
                             <?php $terms = get_the_terms($post->ID, 'cms');
                             // loop through each term and perform your check
                              foreach ( $terms as $term ) {
                              if($term->name == 'Wordpress') {
                              echo '<div class="home-icone"><img src="img/wordpress.png" alt="Thème Wordpress"/></div>';
                               }
                              if ($term->name == 'Joomla') {
                              echo '<div class="home-icone"><img src="img/joomla.png" alt="Thème Joomla"/></div>';
                               }
                               }
                               ?>
                                
 
                            <div class="home-info"><span class="rouge" style="font-weight:bold"><?php echo get_post_meta($post->ID, 'prix', true) ?></span> | <?php echo get_the_term_list( $post->ID, 'company', 'Par : ', ', ', '' ); ?></div>
                            <a href="<?php the_permalink(); ?>" class="home-button">Détails</a>
                            <a href="<?php echo get_post_meta($post->ID, 'demo', true) ?>" class="home-button">Démo</a>
                                          
                        </div><!--End PostHome-->
 
                       
                        <?php endwhile; endif; wp_reset_query(); ?>
      
                 <div class="cb"></div>
   
 <!-- Start Pagination -->
<?php theme_pagination(); ?>
 
 
         </div><!-- end div content-left -->
          
          
             <!-- Start Sidebar -->
              <?php get_sidebar('blog'); ?> 
              <!-- end Sidebar -->
               
         <div class="cb"></div>
  </div><!-- end div Wrap -->
    
            
<?php get_footer(); ?>



Et celui de ma fonction, dans le fichier fonction.php


//----------------------------- PAGINATION ---------------------------------------// 
 
function theme_pagination()
{
global $wp_query, $wp_rewrite;
    $wp_query->query_vars['paged'] > 1 ? $current = $wp_query->query_vars['paged'] : $current = 1;
    $pagination = array(
        'base' => @add_query_arg('page','%#%'),
        'format' => '',
        'total' => $wp_query->max_num_pages,
        'current' => $current,
                'show_all' => false,
                'end_size'     => 1,
                'mid_size'     => 2,
        'type' => 'list',
        'next_text' => ' ',
        'prev_text' => ' '
        );
    if( $wp_rewrite->using_permalinks() )
        $pagination['base'] = user_trailingslashit( trailingslashit( remove_query_arg( 's', get_pagenum_link( 1 ) ) ) . 'page/%#%/', 'paged' );
    if( !empty($wp_query->query_vars['s']) )
        $pagination['add_args'] = array( 's' => get_query_var( 's' ) );
    echo paginate_links( $pagination );
}


J'avais déjà rencontré ce problème pour un autre site. Je ne comprends pas trop pourquoi. j'ai fait quelques essais, mais je ne trouve pas. Merci par avance pour votre aide
Salut,

Le code me semble correct, dans ta fonction tu utilises la fonction native de WordPress paginate_links(). Pour ma part je pense que tu devrais mettre ta fonction d'appel en fin de boucle parce qu'en dehors c'est plus compliqué Smiley cligne

EDIT: avant la fin de la boucle plus précisément Smiley langue
Modifié par jmlapam (13 May 2012 - 15:28)
jmlapam a écrit :
Salut,

Le code me semble correct, dans ta fonction tu utilises la fonction native de WordPress paginate_links(). Pour ma part je pense que tu devrais mettre ta fonction d'appel en fin de boucle parce qu'en dehors c'est plus compliqué Smiley cligne

EDIT: avant la fin de la boucle plus précisément Smiley langue


Malheureusement, ce n'est pas la solution. Cela ne marche pas non plus. Ah c Galère
<?php theme_pagination(); ?>
avant
<?php endwhile; endif; wp_reset_query(); ?>
?

De toute façon l’appel de la fonction doit être à l’intérieur de la loop, je te le dis Smiley cligne

EDIT: Sinon regarde si tu as assez d'articles pour avoir ta pagination ou regarde du côté de query_post
Modifié par jmlapam (14 May 2012 - 14:04)
Je me permets de donner la réponse malgré la date du topic, ça pourra aider certaines personnes Smiley smile

En fait, à la place de new WP_Query(), il faut utiliser query_posts(). Dans le cas d'un modèle de page, on doit modifier la requête principale !