• 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:

    https://localhost/cunningham/?location=&propertytype=&minBedrooms=1&maxBedrooms=9&minCost=0&maxCost=100000&meta_key=&tenancy=&s=

    The page 2 URL:

    https://localhost/cunningham/page/2/?location&propertytype&minBedrooms=1&maxBedrooms=9&minCost=0&maxCost=100000&meta_key&tenancy&s/

Viewing 1 replies (of 1 total)
Viewing 1 replies (of 1 total)
  • The topic ‘Search results pagination still not working’ is closed to new replies.