web-dev-qa-db-fra.com

Liste des articles de l'auteur paginés sur une page d'auteur personnalisée (ANOTHER THEORY)

Ok, voici une autre histoire pour ma pagination personnalisée sur la page de l'auteur personnalisé. Ce que je veux faire, c'est afficher l'avatar de l'auteur, sa description, son site Web et quelques champs supplémentaires, et bien sûr lister son message et le paginer ....

Voici la capture d'écran de ma page d'auteur personnalisée: http://i56.tinypic.com/2cosldy.png

Comme vous pouvez le constater, tout semble en ordre. Maintenant, le problème est la pagination. J'ai utilisé le code de Kreisi (pagination sans plugins) . Ce que j'ai fait est de créer une boucle personnalisée et de l'appeler à la fonction de Kreisi

voici le code

    $uid = $curauth->ID;
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$authloop = new WP_Query("author=$uid&paged=$paged");
$ppp = 5; //set my custom number of post to appear

$args = array(
           'post_per_page' => $ppp,
           'author' => $uid,
           'paged' => $paged

 );

$authorposts = get_posts($args);


if ( count( $authorposts ) > 0 ) {              

        foreach ( $authorposts as $post ):  setup_postdata($post)            

        ?>
                <li>
                        <?php if ( has_post_thumbnail() ) : ?>
                                <img src="<?php echo bloginfo('template_url'); ?>/inc/scripts/timthumb.php?src=<?php echo catch_that_image(); ?>&w=40&h=40&zc=1&q=30" alt="<?php the_title(); ?>" class="authorpostimg"/>

                        <?php else :    ?>
                                <img src="<?php echo bloginfo('template_url'); ?>/inc/scripts/timthumb.php?src=<?php echo catch_that_image(); ?>&w=40&h=40&zc=1&q=100" alt="<?php the_title(); ?>" class="authorpostimg"/>
                        <?php endif; ?>

                        <a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>" class="authorpostlink"><?php the_title(); ?></a>
                        <?php the_excerpt(); ?>
                </li>
        <?php

        endforeach;  

        wnw_authpagination($authloop->max_num_pages);

} else {
        echo '<p>No articles by this user</p>';
}

Voici le scénario pour mieux comprendre

Supposons que le blog ait un total de 30 articles et que l'auteur Ven Francis en ait 15. Si vous voyez sur ma variable, j'ai mis la valeur de post_per_page à 5. Et sur la fonction de Kreisi, la plage est 2. (veuillez visiter le lien vers son code pour mieux comprendre) Donc, ce qui doit arriver est que, la pagination devrait montrer 5 boutons de page

[c] [2] [3] [>] [>>]

où [c] est l'actuel ... [3] et [>>] la dernière page (3ème page). Mais ce qui se passe dans ma situation, c’est que, lorsque vous survolez la page [>>], cela s'affiche/page/6 et je pense que nous obtenons le nombre total de publications du blog.

Et si vous cliquez sur 3 (3ème page). Il montrera toujours les 4,5 et [>>] et il ne devrait pas. comme ci-dessous illustration

[<<] [<] [1] [2] [c] [4] [5] [>] [>>]

J'espère que vous comprenez le scénario et le problème. Merci encore et que Dieu bénisse!

PS: kreisi ne supporte plus son code brillant, alors je dois le faire moi-même. J'ai besoin d'un peu d'aide de votre part. Je vous remercie!

1
Ven

Essayez mon (gratuit & open source) "Facilité de pagination Deamon" . C'est assez avancé et devrait fonctionner aussi sur les modèles d'auteur. Il suffit de s'en tenir au fichier Lisez-moi présenté sur le lien et de travailler également pour les publications paginées. Vous pouvez également l'intégrer dans votre dossier de thème et l'appeler dans votre functions.php avec quelque chose comme include_once( 'pagination.class.php' );, puis l'appelez-le dans votre tempalte avec oxo_pagination( array( 'your arguments' ) );.

1
kaiser

Vous créez deux boucles supplémentaires ici:

$authloop = new WP_Query("author=$uid&paged=$paged");

Et:

$authorposts = get_posts( array(
    'post_per_page' => $ppp, // Shouldn't this be postS_per_page?
    'author' => $uid,
    'paged' => $paged
) );

Vous utilisez le $authloop pour obtenir le nombre total de pages, mais vous ne spécifiez pas la valeur posts_per_page; elle utilisera donc une valeur par défaut, qui peut ne pas être identique au 5 que vous spécifiez dans la boucle de publication réelle que vous utilisez.

À côté de cela, il est souvent déconseillé d'utiliser une boucle personnalisée avec pagination. Le problème est que WordPress fera toujours une requête pour vous (pour configurer la boucle principale), et prendra le paramètre paged de l'URL avec elle. Disons que vous êtes sur une archive d'auteur. Le posts_per_page par défaut est 10. Cet auteur a 40 posts. Votre boucle personnalisée ne montre que 5 messages par page. Si vous êtes maintenant à la page 5, WordPress interrogera les publications 41-50 au lieu de 21-25 comme vous le feriez dans votre boucle personnalisée. WordPress ne trouvera aucun message et chargera le modèle 404.php au lieu de votre modèle author.php.

Pour cette raison, mieux vaut ne pas créer de boucle personnalisée, mais accrocher la boucle par défaut via pre_get_posts ou un autre crochet.

0
Jan Fabry