BuddyPress自定义好友视频列表分页实现方法咨询
如何为自定义BuddyPress好友视频列表实现分页功能?
别发愁,这个问题其实很好解决!BuddyPress的bp_has_members()函数本身就内置了分页支持,只是你需要调整参数并添加分页导航代码就行。我帮你把代码改好,同时给你讲清楚关键修改点:
核心修改要点
- 添加分页页码参数:在好友列表的
$args数组里加入'paged'参数,用来获取当前页码——WordPress默认用get_query_var('paged', 1)处理,默认显示第一页。 - 添加分页导航组件:在好友列表循环结束后,调用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
相关产品推荐
相关产品推荐

