bp_search_pagination( int $total_items, int $items_per_page, int $curr_paged, string $slug, int $links_on_each_side = 2, string $hashlink = '', string $param_key = 'list' )
Prints pagination links for given parameters with pagination value as a querystring parameter.
Description
Instead of printing http://yourdomain.com/../../page/2/, it prints http://yourdomain.com/../../?list=2
If your theme uses twitter bootstrap styles, define a constant : define(‘BOOTSTRAP_ACTIVE’, true) and this function will generate the bootstrap-pagination-compliant html.
Parameters
- $total_items
-
(Required) total number of items(grand total)
- $items_per_page
-
(Required) number of items displayed per page
- $curr_paged
-
(Required) current page number, 1 based index
- $slug
-
(Required) part of url to be appended after the home_url and before the '/?ke1=value1&...' part. withour any starting or trailing '/'
- $hashlink
-
(Optional) the '#' link to be appended ot url, optional
Default value: ''
- $links_on_each_side
-
(Optional) how many links to be displayed on each side of current active page.
Default value: 2
- $param_key
-
(Optional) the name of the queystring paramter for page value. Default 'list'
Default value: 'list'
Return
(void)
Source
File: bp-search/bp-search-functions.php
function bp_search_pagination( $total_items, $items_per_page, $curr_paged, $slug, $links_on_each_side = 2, $hashlink = "", $param_key = "list" ) {
$use_bootstrap = false;
if ( defined( 'BOOTSTRAP_ACTIVE' ) ) {
$use_bootstrap = true;
}
$s = $links_on_each_side; //no of tabs to show for previos/next paged links
if ( $curr_paged == 0 ) {
$curr_paged = 1;
}
/* $elements : an array of arrays; each child array will have following structure
$child[0] = text of the link
$child[1] = page no of target page
$child[2] = link type :: link|current|nolink
*/
$elements = array();
$no_of_pages = ceil( $total_items / $items_per_page );
//prev lik
if ( $curr_paged > 1 ) {
$elements[] = array( '←', $curr_paged - 1, 'link' );
}
//generating $s(2) links before the current one
if ( $curr_paged > 1 ) {
$rev_array = array(); //paged in reverse order
$i = $curr_paged - 1;
$counter = 0;
while ( $counter < $s && $i > 0 ) {
$rev_array[] = $i;
$i --;
$counter ++;
}
$arr = array_reverse( $rev_array );
if ( $counter == $s ) {
$elements[] = array( ' … ', '', 'nolink' );
}
foreach ( $arr as $el ) {
$elements[] = array( $el, $el, 'link' );
}
unset( $rev_array );
unset( $arr );
unset( $i );
unset( $counter );
}
//generating $s+1(3) links after the current one (includes current)
if ( $curr_paged <= $no_of_pages ) {
$i = $curr_paged;
$counter = 0;
while ( $counter < $s + 1 && $i <= $no_of_pages ) {
if ( $i == $curr_paged ) {
$elements[] = array( $i, $i, 'current' );
} else {
$elements[] = array( $i, $i, 'link' );
}
$counter ++;
$i ++;
}
if ( $counter == $s + 1 ) {
$elements[] = array( ' … ', '', 'nolink' );
}
unset( $i );
unset( $counter );
}
//next link
if ( $curr_paged < $no_of_pages ) {
$elements[] = array( '→', $curr_paged + 1, 'link' );
}
/* enough php, lets echo some html */
if ( isset( $elements ) && count( $elements ) > 1 ) {
?>
<div class="pagination navigation">
<?php if ( $use_bootstrap ): ?>
<div class='pagination-links'>
<?php else: ?>
<div class="pagination-links">
<?php endif; ?>
<?php
foreach ( $elements as $e ) {
$link_html = "";
$class = "";
switch ( $e[2] ) {
case 'link':
unset( $_GET[ $param_key ] );
$base_link = get_bloginfo( 'url' ) . "/$slug?";
foreach ( $_GET as $k => $v ) {
$base_link .= "$k=$v&";
}
$base_link .= "$param_key=$e[1]";
if ( isset( $hashlink ) && $hashlink != "" ) {
$base_link .= "#$hashlink";
}
$link_html = "<a href='$base_link' title='$e[0]' class='page-numbers' data-pagenumber='$e[1]'>$e[0]</a>";
break;
case 'current':
$class = "active";
if ( $use_bootstrap ) {
$link_html = "<span>$e[0] <span class='sr-only'>(current)</span></span>";
} else {
$link_html = "<span class='page-numbers current'>$e[0]</span>";
}
break;
default:
if ( $use_bootstrap ) {
$link_html = "<span>$e[0]</span>";
} else {
$link_html = "<span class='page-numbers'>$e[0]</span>";
}
break;
}
//$link_html = "<li class='" . esc_attr($class) . "'>" . $link_html . "</li>";
echo $link_html;
}
?>
<?php if ( $use_bootstrap ): ?>
</div>
<?php else: ?>
</div>
<?php endif; ?>
</div>
<?php
}
}
Changelog
| Version | Description |
|---|---|
| BuddyBoss 1.0.0 | Introduced. |
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.