Search results pagination still not working
-
So, I’ve searched high and low for solutions and tried different ones, including the one thoroughly explained here https://wordpress.stackexchange.com/questions/120407/how-to-fix-pagination-for-custom-loops by Chip Bennett, but I still can’t seem to get it working. The first page of results work fine but from page 2 it only shows the index template and still says page not found. Here’s my code:
**Functions.php**
function advanced_search_query($query) {
if ($query->is_search) {
$query->set(‘s’, $_GET[‘s’]);
$query->set(‘post_type’, array( ‘properties’ ));
$query->set(‘meta_key’, $_GET[‘meta_key’]);
$query->set(‘orderby’, $_GET[‘sortby’]);
$query->set(‘order’, $_GET[‘order’]);
$query->set(‘posts_per_page’, ‘5’);
$query->set(‘paged’, $paged);if (isset($_GET[‘author’])) {
$query->set(‘author’, $_GET[‘author’]);
}if (isset($_GET[‘propertytype’])) {
$query->set(‘taxonomy’, ‘propertytype’);
$query->set(‘terms’, $_GET[‘propertytype’]);
}$minCost = $_GET[‘minCost’];
$minCost = preg_replace(“/[^0-9]/”,””, $minCost);
if ($minCost == “”){
$minCost = “0”;
}$maxCost = $_GET[‘maxCost’];
$maxCost = preg_replace(“/[^0-9]/”,””, $maxCost);
if ($maxCost == “”){
$maxCost = “99999999999999”;
}$query->set(‘meta_query’, array(
‘relation’ => ‘AND’,
array(
‘key’ => ‘ce_location’,
‘value’ => $_GET[‘location’],
‘compare’ => ‘LIKE’,
‘type’ => ‘CHAR’
),
array(
‘key’ => ‘ce_cost’,
‘value’ => array($minCost, $maxCost),
‘compare’ => ‘BETWEEN’,
‘type’ => ‘NUMERIC’
),
array(
‘key’ => ‘ce_bedrooms’,
‘value’ => array($_GET[‘minBedrooms’], $_GET[‘maxBedrooms’]),
‘compare’ => ‘BETWEEN’,
‘type’ => ‘NUMERIC’
),
array(
‘key’ => ‘ce_tenancy’,
‘value’ => $_GET[‘tenancy’],
‘compare’ => ‘LIKE’,
‘type’ => ‘CHAR’
)
));
};
return $query;
};
add_filter(‘pre_get_posts’, ‘advanced_search_query’, 1000);**Code to pull query arguments**
global $query_string;
$query_args = explode(“&”, $query_string);
$search_query = array();foreach($query_args as $key => $string) {
$query_split = explode(“=”, $string);
$search_query[$query_split[0]] = urldecode($query_split[1]);
}
$search_query[‘paged’] = get_query_var( ‘paged’ ) ? get_query_var( ‘paged’ ) : 1;$search = new WP_Query($search_query);
**Loop code:**
if ( have_posts() ) : while (have_posts()) : the_post();
//loop content
endwhile;
if(function_exists(‘wp_simple_pagination’)) { wp_simple_pagination(); } ?>
else :
echo ‘Sorry, there are currently no property listings available’;
endif;Any help will be immensely appreciated.
Cheers.
EDIT: I also noticed the URL is modified when I try to access page 2.
This is the page 1 URL:
The page 2 URL:
- The topic ‘Search results pagination still not working’ is closed to new replies.