帮助将分页添加到自定义wp_Query

时间:2018-01-16 作者:user2143561

我在buddypress中使用了自定义的wp\\U查询来列出作者的所有帖子(取自用户当前访问的个人资料)。我试着关注其他话题,但失败得很惨。

代码如下:

    ?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

}
?
我尝试使用(抱歉格式太糟糕):

$query = new WP_Query(array(\'author=\'=>$user_id, \'posts_per_page\'=>20, \'paged\'=>$paged));
但是,虽然它可以工作(当然没有分页),但我会列出所有帖子,无论作者是谁。我做错了什么(除了在这方面做得非常糟糕)?

2 个回复
最合适的回答,由SO网友:user2143561 整理而成

好吧,我想出来了。我当时很傻。经过几次迭代后,我确定了这个版本:

 $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);
我的主要问题是,我尝试使用“author=”=>$user\\u id,这使得它在所有作者的所有文章中循环。

也许这会对某人有所帮助。

SO网友:tricky x

我个人会在获取用户id后执行此操作:

echo \'<pre>\';
var_dump($user_id);
echo \'</pre>\';
要进行检查,请按预期获取$user\\u id。(int)这应该是一个评论,但我缺乏声誉。

结束