I’ve also posted this on the wordpress support forums, for scribu’s wp-pagenavi plugin:
http://wordpress.org/support/topic/plugin-wp-pagenavi-custom-query-form-submit-part-2?replies=1
My situation:
I am using a form to create a custom query that displays posts from a custom post type archive matching a certain custom field (Eg: For “custom-post-type” show only posts that have the “custom-field” value selected from the form). I know, it’s called filtering 😛
My custom post type archive looks like this:
www.example.com/custom-post-type-archive
(note that I use the “post name” permalink setting)
Upon form submission, the new url is this:
www.example.com/custom-post-type-archive?key=value
The custom query is set to show only posts with value of key custom field:
$value = $_GET['value'];
$paged = get_query_var('page');
$args = array(
'post_type' => 'custom-post-type',
'meta_key' => 'key',
'meta_value' => $value,
'paged' => $paged,
'posts_per_page' => 10
);
$my_query = new WP_Query($args);
After the loop I have:
wp_pagenavi(array('query' => $my_query));
wp_reset_postdata();
The query works, I get the right results. But I have problems getting pagination to work. When I go to the next page, I get this url:
www.example.com/custom-post-type-archive/page/2?key=value
but pagination still shows like I’m on the first page and the results are the same.
If I manually enter:
www.example.com/custom-post-type-archive?key=value&page=2
I get the right results (from page 2), but the all navigation links are the same as the url I manually entered above.
Please help (hints, resources, anything).
Thx,
Radu
You can try implementing ajax based pagination for wp-pagenavi plugin(see http://wordpressapi.com/2011/05/16/add-ajax-pagination-in-wordpress-blog/ for reference ). I think this will solve your issue.
Because this comes up in search, I’d like to point out that WP Page Navi ( as of version 2.74 ) now supports custom queries.
The WP_Pagenavi FAQ links to the following article to explain how to use the Pagenavi plugin with a secondary query by passing the
wp_pagenavi()
function a query parameter.From the tutorial:
Probably the problem has been already solved here: https://stackoverflow.com/a/13216165/1801379
You ca also get some idea from here: https://wordpress.stackexchange.com/a/4131/23290
Here are the solutions I found (note I’m using WP 3.3.2 and WP-Pagenavi 2.82):
Solution 1: Using
paged
instead ofpage
as aget_query_var
parameter.Solution 2 Using ajax based navigation, just as in the article swtshweta pointed out.
(using Ajax, pagination works properly even with the
page
parameter).Strangely the answer proposed does not show anything on my browser. I have the latest WP and latest Chrome browser.
Thanks anyway.
Although wp_pagenavi appears correctly, and the links show /page2/, /page3/ and so on, and I have added the $paged or $page attribute to my wp_query, always the first page appears.
Radu,
The following solution worked for me:
I modified a standard paging code, and made it submit “&page=xxx” and catched $page as form submission variable. It now works perfect.
Notice the last line, this is where modifications happened.
}