【问题标题】:Pagination on BuddyPress member profileBuddyPress 会员资料上的分页
【发布时间】:2017-08-03 01:01:34
【问题描述】:

我想在会员 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 结构。

【问题讨论】:

  • 您好。您能否提供您网站的正确网址?你给的那个是错的:link,你的网站域名不见了
  • 我也遇到了这个问题,你找到解决办法了吗?

标签: php wordpress .htaccess pagination buddypress


【解决方案1】:

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

注意:这将与 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;
    }
}

【讨论】:

    【解决方案2】:

    使用 DataTable 它将为您提供自动分页功能,您只需根据需要控制该功能。在这里我给你链接看到这个https://datatables.net/examples/ajax/simple.html或对于Wordpress你也可以使用名为WP-Paginate的插件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多