This may not be the proper way but it works in BP profile pages
...
$paged = ( isset( $_GET['vp'] ) ) ? $_GET['vp'] : 1;
$args = array(
'post_type' => array( 'video' ),
'author' => bp_displayed_user_id(),
'paged' => $paged,
'posts_per_page' => get_option( 'posts_per_page' )
);
$author_videos = new WP_Query( $args );
if ( $author_videos->have_posts() ) : while ( $author_videos->have_posts() ) : $author_videos->the_post();
get_template_part( 'loop', 'video' );
endwhile; ?>
</div>
<div class="entry-content"><br>
<?php echo videos_profile_pagination( $wp_query ); ?>
</div>
<?php wp_reset_query();
endif; ?>
</div>
</div>
</div>
</div>
<?php }
// pagination for profile video loop page
function videos_profile_pagination( $wp_query ) {
$videos_profile_page_links = paginate_links( array(
'base' => esc_url( add_query_arg( 'vp', '%#%' ) ),
'format' => '',
'total' => ceil( (int) $wp_query->found_posts / (int) get_query_var('posts_per_page') ),
'current' => (int) get_query_var('paged'),
) );
return apply_filters( 'videos_profile_pagination', $videos_profile_page_links );
}