You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BuddyPress自定义好友视频列表分页实现方法咨询

如何为自定义BuddyPress好友视频列表实现分页功能?

别发愁,这个问题其实很好解决!BuddyPress的bp_has_members()函数本身就内置了分页支持,只是你需要调整参数并添加分页导航代码就行。我帮你把代码改好,同时给你讲清楚关键修改点:

核心修改要点

  1. 添加分页页码参数:在好友列表的$args数组里加入'paged'参数,用来获取当前页码——WordPress默认用get_query_var('paged', 1)处理,默认显示第一页。
  2. 添加分页导航组件:在好友列表循环结束后,调用BuddyPress内置的bp_member_pagination()函数,它会自动生成符合BP风格的分页按钮(上一页、下一页、页码跳转)。

修改后的完整代码

<div class="dashboard-wrapper"> 
    <h1>My Friends' Videos</h1> 
    <a href="?part=default" class="button">Dashboard</a><br> 
    <?php 
    $user_id = bp_is_user() ? bp_displayed_user_id() : bp_loggedin_user_id(); 
    // 获取当前页码,默认值为1
    $paged = get_query_var('paged', 1);
    $args = apply_filters('bp_show_friends_args', array( 
        'user_id' => $user_id, 
        'type' => 'active', 
        'per_page' => 50, 
        'paged' => $paged, // 新增分页参数
        'populate_extra' => 0 
    ) ); 

    if (bp_has_members($args)) { ?> 
        <ul class="bpsf-members"> 
            <?php while (bp_members()) : bp_the_member(); ?> 
                <li class="bpsf-member"> 
                    <?php bp_member_name(); ?> 
                    <div class="item-avatar"> 
                        <a href="<?php bp_member_permalink() ?>" title="<?php bp_member_name(); ?>"> 
                            <?php bp_member_avatar($avatar_args) ?><?php display_friend_colors(bp_get_member_user_id()); ?> 
                        </a> 
                    </div> 
                    <?php do_action('bp_show_friends_after_friend_avatar', bp_get_member_user_id()); ?><div class="cleared"></div> 
                    <div class="videos"> 
                        <ul> 
                            <?php 
                            // 重命名变量避免和好友列表的$args冲突
                            $video_args = array( 
                                'author' => bp_get_member_user_id(), 
                                'orderby' => 'post_date', 
                                'order' => 'DESC', 
                                'post_type' => 'member_video', 
                                'posts_per_page' => -1 // 若需限制单用户视频数量,可改为具体数字如5
                            ); 
                            $current_user_posts = get_posts($video_args); 
                            foreach ($current_user_posts as $post) : setup_postdata($post); 
                                $thumbnail = get_post_meta(get_the_ID(), 'thumbnail'); 
                                ?> 
                                <li> 
                                    <a href="<?php the_permalink(); ?>"><img src="<?= $thumbnail[0] ?>" /></a> 
                                    <p><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></p> 
                                </li> 
                            <?php endforeach; wp_reset_postdata(); ?> 
                        </ul> 
                    </div> 
                    <div class="cleared"></div> 
                </li> 
            <?php endwhile; ?> 
        </ul> 
        <!-- 新增:BuddyPress内置分页导航 -->
        <?php bp_member_pagination(); ?>
    <?php } else { ?>
        <p>暂时没有找到好友的视频内容哦!</p>
    <?php } ?>
</div>

额外提示

  • 我把视频查询的$args重命名为$video_args,避免和好友列表的查询变量冲突,让代码更易维护。
  • 如果单用户的视频数量过多,建议把posts_per_page从-1改成具体数字(比如5),避免单页内容加载过慢。
  • bp_member_pagination()生成的导航会沿用BuddyPress默认样式,如果你需要自定义外观,可以通过CSS修改.pagination相关类。

内容的提问来源于stack exchange,提问作者Tommy Adeniyi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 10:09:22