boucle custom et pagination avec custom post_type (Créer un compte)

  • Statut : non résolu
4 sujets de 1 à 4 (sur un total de 4)
  • Auteur
    Messages
  • #546235
    Lionelwp
    Participant
    Maître WordPress
    629 contributions

    Bonjour,

    Ma configuration WP actuelle
    – Version de WordPress : 4.0
    – Version de PHP/MySQL : 5.4
    – Thème utilisé : perso
    – Extensions en place : polylang, tinyMce advanced, simple lightbox
    – Nom de l’hebergeur : 1&1
    – Adresse du site :

    Problème(s) rencontré(s) :

    j’ai créé un custom post type (mk_poem) qui contient des poèmes,
    je veux en afficher 3 par page, avec une pagination.
    J’ai créé le code suivant, et quand je change de page, je me retrouve systématiquement avec les 3 premiers posts tout le temps.
    La fonction ‘paginate_link’ affiche bien les numéros de pages avec la classe active pour chaque page, mais la page n’affiche que les 3 premiers posts..

    je vois pas où est l’errer, c’est surement trop gros pour que je le vois .. peut être 🙂

    merci

    <div id="wrap-content" class="poem-container cf">
    <div id="content-page">
    <?php

    $args = array(
    'post_type' => ‘mk_poem’,
    ‘posts_per_page’ => 3
    );
    $poems = new WP_Query($args);


    if ( $poems->have_posts() ):
    while ( $poems->have_posts() ):
    $poems->the_post();
    get_template_part( ‘content’, ‘poem’ );
    endwhile;

    else: ?>
    <article class="post-content">
    <p>aucun contenu trouvé !! </p>
    </article>
    <?php endif; ?>

    <?php
    $big = 999999999; // need an unlikely integer
    $total_pages = $poems->max_num_pages;

    if ($total_pages > 1): ?>
    <div class="mk-pagination">
    <?php echo paginate_links( array(
    'base' => str_replace( $big, ‘%#%’, esc_url( get_pagenum_link( $big ) ) ),
    ‘format’ => ‘/page/%#%’,
    ‘current’ => max( 1, get_query_var(‘paged’) ),
    ‘total’ => $total_pages,
    ‘prev_next’ => True,
    ‘prev_text’ => __(‘« Previous page’, ‘abx’),
    ‘next_text’ => __(‘Next page »’, ‘abx’),
    ) ); ?>
    </div>
    <?php endif; ?>

    <!-- fin content_page --></div>

    #990750
    Lionelwp
    Participant
    Maître WordPress
    629 contributions

    J’ai trouvé une solution en modifiant la requête comme suit, ça marche mais je comprends pas tout ce qui se passe…

    le paramètre get_query_var(‘paged’) vaut 0 sur la première page, 2 sur la 2ème et etc…. il ne vaut jamais 1

    J’ai bon?? 🙂

     ‘mk_poem’,
    ‘posts_per_page’ => 3,
    ‘paged’ => $mapage
    );
    $poems = new WP_Query($args);

    ?>

    #990751
    Chouby
    Participant
    Chevalier WordPress
    416 contributions

    C’est ça. Mais il n’y a pas que la query var ‘paged’ susceptible d’être écrasée (enfin si sur un site sans plugin). Il faut toutes les récupérer et n’écraser que celles que tu veux:

     ‘mk_poem’,
    ‘posts_per_page’ => 3,
    );

    $args = array_merge($GLOBALS[‘wp_query’]->query_vars, $args);
    $poems = new WP_Query($args);

    C’est particulièrement vrai sur un site avec Polylang qui ajoute la query var ‘lang’

    #990752
    Lionelwp
    Participant
    Maître WordPress
    629 contributions

    merci Chouby 🙂

4 sujets de 1 à 4 (sur un total de 4)
  • Vous devez être connecté pour répondre à ce sujet.