web-dev-qa-db-fra.com

Aide pour ajouter une pagination à la commande wp_query personnalisée

J'ai personnalisé wp_query utilisé dans buddypress pour répertorier tous les messages de l'auteur (pris à partir du profil utilisateur visité actuellement). J'ai essayé de suivre d'autres sujets mais j'échoue lamentablement.

Code ci-dessous:

    ?php // Display posts in user profile

    // Construct new user profile tab

add_action( 'bp_setup_nav', 'add_profileposts_tab', 100 );

function add_profileposts_tab() {
 global $bp;
 bp_core_new_nav_item( array(
 'name' => 'Publikacje',
 'slug' => 'publikacje',
 'screen_function' => 'bp_postsonprofile',
 'default_subnav_slug' => 'Moje publikacje', 
 'position' => 35
 )
 );
}

// show 'Posts' tab once clicked

function bp_postsonprofile() {
 add_action( 'bp_template_content', 'profile_screen_posts_show' );
 bp_core_load_template( apply_filters( 'bp_core_template_plugin',     'members/single/plugins' ) );
}

// query the loop and get the template

function profile_screen_posts_show() {

$user_id = bp_displayed_user_id(); 
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$query = new WP_Query( 'author=' . $user_id );





 ?
    ?php if ( $query->have_posts() ) : ?
    ?php while ( $query->have_posts() ): $query->the_post(); ?
        <div id="post-<?php the_ID(); ?> blog_list" <?php post_class(); ?>>
                <div class="container-wrapper blog-list">
                <div class="post-tittle"><h2 class="posttitle"> <a href="<?php the_permalink(); ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a> </h2></div>
            </br>
            <div class="post-wrapper">

                <div class="miniaturka post-left">
                ?php if ( function_exists( 'has_post_thumbnail' ) && has_post_thumbnail( get_the_ID() ) ):?

                    <div class="post-featured-image left">
                       <a href="<?php the_permalink(); ?>"><?php  the_post_thumbnail('medium');?></a>
                    </div>
               ?php endif;?
            </div>
            <div class="post-content post-right">

                <p class="author class"><?php echo get_the_date(); ?></br><?php printf(get_the_category_list( ', ' ) ); ?></p>
                </br>
                <div class="entry">

                    <?php the_excerpt(); ?>
                    <span class="comments"><?php comments_popup_link(); ?></span>
                </div>


            </div>

            </div>

        </div>
        </div>
 ?php endwhile; ?

 ?php else: ?
 ?php wp_reset_query(); ?

 <div id="message" class="info">
 <p><?php bp_displayed_user_username(); ?> jeszcze niczego nie napisał         </p>
 </div>

    ?php endif; wp_reset_postdata();?    ?php

}
?

J'ai essayé d'utiliser (désolé pour le formatage horrible):

$query = new WP_Query(array('author='=>$user_id, 'posts_per_page'=>20, 'paged'=>$paged));

Mais pendant que cela fonctionne (sans pagination, bien sûr), je l’obtiens en listant TOUS les messages, quel que soit son auteur. Qu'est-ce que je fais mal (autre que d'être super mauvais à cela)?

2
user2143561

Ok je l'ai compris. J'étais bête. Après quelques itérations supplémentaires, je me suis installé sur cette version:

 $user_id = bp_displayed_user_id(); 
 $paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
  $args = array(
'posts_per_page'   => 10,
'post_type'        => 'post',
'author'           => $user_id,
'paged'            => $paged,
);
$query = new WP_Query($args);

Mon problème principal est que j'ai essayé d'utiliser 'author =' => $ user_id, ce qui l'a fait parcourir toutes les publications de tous les auteurs.

Cela aidera peut-être quelqu'un.

0
user2143561

Personnellement, je le ferais après avoir récupéré l'identifiant de l'utilisateur:

echo '<pre>';
var_dump($user_id);
echo '</pre>';

Pour vérifier, il faut obtenir le $ user_id comme prévu. (int) Cela devrait être un commentaire, mais je manque de réputation.

0
tricky x