[wp-trac] Re: [WordPress Trac] #9379: Custom permalinks causes
error when clicking Older Entries
WordPress Trac
wp-trac at lists.automattic.com
Mon Mar 23 15:23:33 GMT 2009
#9379: Custom permalinks causes error when clicking Older Entries
--------------------------+-------------------------------------------------
Reporter: jsherk | Owner: anonymous
Type: defect (bug) | Status: new
Priority: high | Milestone: Unassigned
Component: General | Version: 2.7.1
Severity: major | Keywords:
--------------------------+-------------------------------------------------
Comment(by jsherk):
The barefootdevelopment solution did not work, but I was able to modify it
and work around the problem:
When viewing pages from categories [permalink= /%category%/%post_id% and
lets assume the category name is 'stuff' and I want to go to page 2], then
$query_string is passed 'category_name'='stuff/page' and it is also passed
'p'='2'.
I had to remove the '/page' from the end of 'category_name', and I had to
set 'paged'='2' and had to unset 'p'. Here is the workaround code plugin:
<?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: http://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: http://www.thinkbarefoot.com
Copyright 2007 Doug Smith (email: dsmith at thinkbarefoot.com)
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
* www.mysite.com/wordpress/news/27
* When attempting to go to another page, it looked like this
* 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');
?>
--
Ticket URL: <http://core.trac.wordpress.org/ticket/9379#comment:1>
WordPress Trac <http://trac.wordpress.org/>
WordPress blogging software
More information about the wp-trac
mailing list