Query String being Removed Creating a Pagination Issue within a Custom Plugin
I created simple custom WordPress plugin for a client in 2016 that simply displays a paginated list of results queried from a custom table.
try {
$recordcountquery = 'SELECT
FName,LName
FROM
tblBurialRegister WHERE';
if (!empty($_SESSION['firstname']))
{
$cond = $mydb-prepare(' FName = %s', $_SESSION['firstname']);
$recordcountquery .= $cond;
}
if (!empty($_SESSION['lastname']) !empty($_SESSION['firstname']))
{
$recordcountquery .= ' and';
}
if (!empty($_SESSION['lastname']))
{
$cond = $mydb-prepare(' LName = %s', $_SESSION['lastname']);
$recordcountquery .= $cond;
}
$countresults = $mydb-get_results($recordcountquery);
$total = count($countresults);
// How many items to list per page
$limit = 20;
// How many pages will there be
$pages = ceil($total / $limit);
// What page are we currently on?
$page = get_query_var('page');
if($page == 0)
{
$page = 1;
}
// Calculate the offset for the query
$offset = ($page - 1) * $limit;
// Some information to display to the user
$start = $offset + 1;
$end = min(($offset + $limit), $total);
// The back link
$prevlink = ($page 1) ? 'a href=?page=1 title=First pagelaquo;/a a href=?page=' . ($page - 1) . ' title=Previous pagelsaquo;/a' : 'span class=disabledlaquo;/span span class=disabledlsaquo;/span';
// The forward link
$nextlink = ($page $pages) ? 'a href=?page=' . ($page + 1) . ' title=Next pagersaquo;/a a href=?page=' . $pages . ' title=Last pageraquo;/a' : 'span class=disabledrsaquo;/span span class=disabledraquo;/span';
if (count($countresults) 0)
{
echo span id='results' class='top-offset'/spanp style='font-size:x-large;'Showing results for: .$_SESSION['firstname']. .$_SESSION['lastname']./pbr/;
// Display the paging information
echo 'div id=paging class=paging-text style=font-size: large;p', $prevlink, ' Page ', $page, ' of ', $pages, ' pages, displaying ', $start, '-', $end, ' of ', $total, ' results ', $nextlink, ' /p/div';
}
$query = 'SELECT
ID,NUM,FName,LName,AGE,DATEBORN,DDate
FROM
tblBurialRegister WHERE';
if (!empty($_SESSION['firstname']))
{
$cond = $mydb-prepare(' FName = %s', $_SESSION['firstname']);
$query .= $cond;
}
if (!empty($_SESSION['lastname']) !empty($_SESSION['firstname']))
{
$query .= ' and';
}
if (!empty($_SESSION['lastname']))
{
$cond = $mydb-prepare(' LName = %s', $_SESSION['lastname']);
$query .= $cond;
}
$query .= ' ORDER BY
LName,FName
LIMIT '
. $limit .
' OFFSET '
. $offset .'';
$results = $mydb-get_results($query);
// Do we have any results?
if (count($results) 0) {
echo div style='overflow-x:auto;'table style='font-size:large;'thFirst Name/ththLast Name/ththAGE/thth/th;
foreach ($results as $obj) :
$age = $obj-AGE;
if(empty($age))
{
$age = 'Unknown';
}
$bdate = $obj-DATEBORN;
if(empty($bdate))
{
$bdate = 'Unknown';
}
$ddate = $obj-DDate;
if(empty($ddate))
{
$ddate = 'Unknown';
}
echo trtd.$obj-FName./tdtd.$obj-LName./tdtd.$age./tdtdform method='post' action='http://www.website.com/record-search-details/'button id='myBtn' class='et_pb_contact_submit et_pb_button rsButton' style='color: #424892!important;
border-color: #424892;' type='submit' name='RecordDetails' value=.$obj-ID.Details/button/form/td/tr;
endforeach;
echo /table/div;
} else {
echo 'pNo results found./p';
}
} catch (Exception $e) {
echo 'p', $e-getMessage(), '/p';
}
This code has not been touched since it's release and has been working. They reported to me in the last few months that the pagination is not working and user's cannot get past the first page.
It looks to me like the query string is now being removed when a link in the pagination is clicked ie. ?page=2
. Perhaps something changed in a WordPress update at some point that changed the behavior of query strings?
I looked into wp_removable_query_args()
in functions.php
which exists in the plugin like so:
function wp_removable_query_args() {
$removable_query_args = array(
'activate',
'activated',
'admin_email_remind_later',
'approved',
'core-major-auto-updates-saved',
'deactivate',
'delete_count',
'deleted',
'disabled',
'doing_wp_cron',
'enabled',
'error',
'hotkeys_highlight_first',
'hotkeys_highlight_last',
'ids',
'locked',
'message',
'same',
'saved',
'settings-updated',
'skipped',
'spammed',
'trashed',
'unspammed',
'untrashed',
'update',
'updated',
'wp-post-new-reload',
);
But my understanding is that this only removes the query strings listed, so page
should not be removed. Any help or direction would be appreciated.
Topic query-string mysql php plugin-development Wordpress
Category Web