Create page numbers for pagination from current page number and total number of pages
<?php | |
// EXAMPLE USE IN COMMENTS | |
/** | |
* Convert current page number and the total number of pages into a number range for pagination. | |
* Use $edge_number_count to indicate how many numbers should appear to the left or right of the current page. | |
* If the start or end page is one off of the start or end of the entire set, the range is extended. This prevents page 2 from being the start page, and page N-1 from the end page. | |
* | |
* @param $current_page | |
* @param $num_pages | |
* @param int $edge_number_count | |
* | |
* @return array | |
*/ | |
function rs_get_pagination_numbers( $current_page, $num_pages, $edge_number_count = 2 ) { | |
$start_number = $current_page - $edge_number_count; | |
$end_number = $current_page + $edge_number_count; | |
// Minus one so that we don't split the start number unnecessarily, eg: "1 ... 2 3" should start as "1 2 3" | |
if ( ($start_number - 1) < 1 ) { | |
$start_number = 1; | |
$end_number = min($num_pages, $start_number + ($edge_number_count*2)); | |
} | |
// Add one so that we don't split the end number unnecessarily, eg: "8 9 ... 10" should stay as "8 9 10" | |
if ( ($end_number + 1) > $num_pages ) { | |
$end_number = $num_pages; | |
$start_number = max(1, $num_pages - ($edge_number_count*2)); | |
} | |
if ( $end_number == $num_pages && (($edge_number_count*2) + 1) > ($end_number - $start_number) && $start_number > 1 ) { | |
$start_number = $end_number - ($edge_number_count*2); | |
} | |
return array( $start_number, $end_number ); | |
} |
This comment has been minimized.
This comment has been minimized.
Hello @RadGH,
And i get always the same response even when i change the current_page value.
Best regards. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This comment has been minimized.
Example usage: