I re-wrote the barefoot plugin for WP 2.7.1 and this fixed my problem… maybe it will help others as well. It also works with WP-PageNavi…
[code]
<?php
/*
Plugin Name: Fix Paging in Category Listings
Plugin URI:
Description: Fixes a bug where next/previous page links are broken in category listings
Version: 0.6
Author: Doug Smith (modified by Jeff Sherk)
Author URI:
Modified on March 23, 2009 by Jeff Sherk for WordPress 2.7.1
Based on original plugin info listed below:
Plugin Name: Fix Paging in Category Listings
Plugin URI: https://www.thinkbarefoot.com
Description: Fixes a bug where next/previous links are broken in category by year/month listings
Version: 0.5
Author: Doug Smith
Author URI: https://www.thinkbarefoot.com
Copyright 2007 Doug Smith (email: [email protected])
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
*/
/**
* Function to fix problem where next/previous buttons are broken on list
* of posts in a category when the custom permalink string is:
* /%category%/%year%/%monthnum%/%postname%/
* The problem is that with a url like this:
*
* /category/2007/10/page/2
*
* the 'page' looks like a post name, not the keyword "page"
*
* MODIFIED ON March 23, 2009 by Jeff Sherk
* Permalink structure was /%category%/%post_id% which looked like
* https://www.mysite.com/wordpress/news/27
* When attempting to go to another page, it looked like this
* https://www.mysite.com/wordpress/news/27/page/2
* but would generate a 404 error .
*
* This modification takes $query_string['category_name'] and chops the '/page'
* off the end. It also takes $query_string['paged'] and sets it equal to
* $query_string['p'], and then unsets $query_string['p'].
* 'p' is not needed, but 'paged' is needed in order to make it work correctly
*/
function fix_page_in_category_from_query_string($query_string) {
//Check to see if the 'p' and 'category_name' are set in $query_string
if ( isset($query_string['category_name']) && isset($query_string['p']) ) {
$category_name = $query_string['category_name'];
$category_len = strlen($category_name);
//Check to see if the 'category_name' has '/page' on the end of it
if (substr($category_name, $category_len-5,5) == '/page') {
//Remove '/page' from the end of 'category_name'
$query_string['category_name'] = substr($query_string['category_name'],0,$category_len-5);
//Set 'paged' equal to the page you want to go to
$query_string['paged'] = $query_string['p'];
//Unset 'p' since we don't need it anymore because we set 'paged' instead
unset($query_string['p']);
}
}
return $query_string;
}
add_filter('request', 'fix_page_in_category_from_query_string');
?>
[/code]