gpt4 book ai didi

php - BuddyPress 成员(member)资料的分页

转载 作者:搜寻专家 更新时间:2023-10-31 21:50:19 25 4
gpt4 key购买 nike

我想在成员的 buddypress 个人资料的自定义选项卡中显示用户的帖子。

问题:分页不起作用。

我在尝试什么:这是我正在尝试的代码:

创建标签:下面的函数在成员个人资料页面上创建一个选项卡。它工作正常。

function add_profile_tab() {
global $bp;
bp_core_new_nav_item( array(
'name' => 'Blog',
'slug' => 'blog',
'screen_function' => 'yourtab_screen',
'position' => 80,
'parent_url' => bp_loggedin_user_domain() . '/blog/',
'parent_slug' => $bp->profile->slug,
'default_subnav_slug' => 'blog'
) );
}

add_action( 'bp_setup_nav', 'add_profile_tab' );

function yourtab_screen() {
add_action( 'bp_template_title', 'blog_content_title' );
add_action( 'bp_template_content', 'blog_content_main' );
bp_core_load_template( 'buddypress/members/single/plugins' );
}

function blog_content_title() {
echo 'Title';
}

function blog_content_main() {
show_user_posts();
}

显示用户帖子:这是显示用户帖子的 show_user_posts():

function show_user_posts() {
$args = array(
'author' => bp_displayed_user_id(),
'post_status' => 'publish',
'paged' => $paged
);

$query = new WP_Query( $args );

if ( $query -> have_posts() ) :

while ( $query -> have_posts() ) : $query -> the_post();
get_template_part( 'excerpt', 'content' );
endwhile;

blog_pagination( $query->max_num_pages, '', $paged );
wp_reset_postdata();
endif;
}

分页:这是分页功能。

function blog_pagination( $numpages = '', $pagerange = '', $paged = '' ) {

global $paged, $wp_query, $wp_rewrite;

if ( empty( $pagerange ) ) {
$pagerange = 2;
}

if ( empty( $paged ) ) {
$paged = 1;
}

if ( $numpages == '' ) {
$numpages = $wp_query -> max_num_pages;

if ( ! $numpages ) {
$numpages = 1;
}
}

$pagination_args = array (
'base' => get_pagenum_link(1) . '%_%',
'format' => 'page/%#%',
'total' => $numpages,
'current' => $paged,
'show_all' => False,
'end_size' => 1,
'mid_size' => $pagerange,
'prev_next' => True,
'type' => 'plain',
'add_args' => false,
'add_fragment' => ''
);

if ( $wp_rewrite->using_permalinks() )
$pagination_args['base'] = user_trailingslashit( trailingslashit( remove_query_arg( 's', get_pagenum_link( 1 ) ) ).'page/%#%/', 'paged' );

if ( ! empty( $wp_query->query_vars['s'] ) )
$pagination_args['add_args'] = array( 's' => get_query_var( 's' ) );

$paginate_links = paginate_links($pagination_args);

if ($paginate_links) {
echo $paginate_links;
}
}

会发生什么:上面的分页函数正确计算并生成了页数,但是我在所有分页链接上都收到 404 错误。例如在这个网址上: http://wp/members/admin/blog/page/2/

我的想法:这是由重写规则引起的。可以通过为上述 URL 添加重写规则来修复它。在 WordPress 中,可以使用 add_rewrite_rule 完成,但我无法弄清楚 Buddypress 的 url 结构。

最佳答案

重置特定页面、帖子、分类法等的每页帖子

注意:这将与 WordPress 每页 10 个帖子的默认设置冲突。如果您正在测试分页,请转到管理中的设置 > 阅读。 &您可以通过对特定帖子使用以下功能来更改每页的帖子。只需更改 if 条件即可。

在function.php文件中添加以下函数

$option_posts_per_page = get_option( 'posts_per_page' );
add_action( 'init', 'my_modify_posts_per_page', 0);
function my_modify_posts_per_page() {
add_filter( 'option_posts_per_page', 'my_option_posts_per_page' );
}
function my_option_posts_per_page( $value ) {
global $option_posts_per_page;
if ( !is_admin() && bp_has_members() ) {
return 12;
} else {
return $option_posts_per_page;
}
}

关于php - BuddyPress 成员(member)资料的分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45274556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com