[wp-trac] [WordPress Trac] #8905: Category pagination broken with certain permalink structures
WordPress Trac
noreply at wordpress.org
Thu Jan 15 18:17:23 UTC 2026
#8905: Category pagination broken with certain permalink structures
--------------------------+-----------------------------
Reporter: rmccue | Owner: (none)
Type: defect (bug) | Status: closed
Priority: normal | Milestone: Future Release
Component: Permalinks | Version: 2.7
Severity: normal | Resolution: worksforme
Keywords: close | Focuses:
--------------------------+-----------------------------
Changes (by juanmaguitar):
* keywords: needs-patch needs-testing close => close
* status: assigned => closed
* resolution: => worksforme
Comment:
== Bug Report
=== Description
Testing an issue with pagination with the following permalink structure:
/%category%/%postname%.
=== Environment
- WordPress: 6.9
- PHP: 8.0.30
- Server: PHP.wasm
- Database: WP_SQLite_Driver (Server: 8.0.38 / Client: 3.51.0)
- Browser: Chrome 143.0.0.0
- OS: macOS
- Theme: Twenty Twenty-Five 1.4
- MU Plugins: None activated
- Plugins: Hello Dolly
=== Steps to Reproduce to setup the test environment
Open
[https://playground.wordpress.net/#ewogICIkc2NoZW1hIjogImh0dHBzOi8vcGxheWdyb3VuZC53b3JkcHJlc3MubmV0L2JsdWVwcmludC1zY2hlbWEuanNvbiIsCiAgImxhbmRpbmdQYWdlIjogIi8iLAogICJwcmVmZXJyZWRWZXJzaW9ucyI6IHsKICAgICJwaHAiOiAiOC4zIiwKICAgICJ3cCI6ICJsYXRlc3QiCiAgfSwKICAic3RlcHMiOiBbCiAgICB7CiAgICAgICJzdGVwIjogImxvZ2luIiwKICAgICAgInVzZXJuYW1lIjogImFkbWluIiwKICAgICAgInBhc3N3b3JkIjogInBhc3N3b3JkIgogICAgfSwKICAgIHsKICAgICAgInN0ZXAiOiAic2V0U2l0ZU9wdGlvbnMiLAogICAgICAib3B0aW9ucyI6IHsKICAgICAgICAicGVybWFsaW5rX3N0cnVjdHVyZSI6ICIvJWNhdGVnb3J5JS8lcG9zdG5hbWUlLyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgInN0ZXAiOiAicnVuV3BJbnN0YWxsYXRpb25XaXphcmQiLAogICAgICAib3B0aW9ucyI6IHsKICAgICAgICAiYWRtaW5Vc2VybmFtZSI6ICJhZG1pbiIsCiAgICAgICAgImFkbWluUGFzc3dvcmQiOiAicGFzc3dvcmQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJzdGVwIjogIndwLWNsaSIsCiAgICAgICJjb21tYW5kIjogIndwIHRlcm0gY3JlYXRlIGNhdGVnb3J5IFNwb3J0cyAtLXBvcmNlbGFpbiIKICAgIH0sCiAgICB7CiAgICAgICJzdGVwIjogIndwLWNsaSIsCiAgICAgICJjb21tYW5kIjogIndwIHRlcm0gY3JlYXRlIGNhdGVnb3J5IE11c2
ljIC0tcG9yY2VsYWluIgogICAgfSwKICAgIHsKICAgICAgInN0ZXAiOiAid3AtY2xpIiwKICAgICAgImNvbW1hbmQiOiAid3AgcG9zdCBjcmVhdGUgLS1wb3N0X3RpdGxlPSdUaGUgRnV0dXJlIG9mIFByb2Zlc3Npb25hbCBCYXNrZXRiYWxsJyAtLXBvc3Rfc3RhdHVzPXB1Ymxpc2ggLS1wb3N0X2NhdGVnb3J5PXNwb3J0cyIKICAgIH0sCiAgICB7CiAgICAgICJzdGVwIjogIndwLWNsaSIsCiAgICAgICJjb21tYW5kIjogIndwIHBvc3QgY3JlYXRlIC0tcG9zdF90aXRsZT0nVG9wIDEwIFJvY2sgQWxidW1zIG9mIHRoZSBEZWNhZGUnIC0tcG9zdF9zdGF0dXM9cHVibGlzaCAtLXBvc3RfY2F0ZWdvcnk9bXVzaWMiCiAgICB9LAogICAgewogICAgICAic3RlcCI6ICJ3cC1jbGkiLAogICAgICAiY29tbWFuZCI6ICJ3cCBwb3N0IGNyZWF0ZSAtLXBvc3RfdGl0bGU9J09seW1waWMgR2FtZXMgSGlnaGxpZ2h0IFJlZWwnIC0tcG9zdF9zdGF0dXM9cHVibGlzaCAtLXBvc3RfY2F0ZWdvcnk9c3BvcnRzIgogICAgfSwKICAgIHsKICAgICAgInN0ZXAiOiAid3AtY2xpIiwKICAgICAgImNvbW1hbmQiOiAid3AgcG9zdCBjcmVhdGUgLS1wb3N0X3RpdGxlPSdKYXp6IExlZ2VuZHM6IEEgUmV0cm9zcGVjdGl2ZScgLS1wb3N0X3N0YXR1cz1wdWJsaXNoIC0tcG9zdF9jYXRlZ29yeT1tdXNpYyIKICAgIH0sCiAgICB7CiAgICAgICJzdGVwIjogIndwLWNsaSIsCiAgICAgICJjb21tYW5kIjogIndwIHBvc3QgY3JlYXRlIC0tcG9zdF90aXR
sZT0nU29jY2VyIFdvcmxkIEN1cCBQcmV2aWV3JyAtLXBvc3Rfc3RhdHVzPXB1Ymxpc2ggLS1wb3N0X2NhdGVnb3J5PXNwb3J0cyIKICAgIH0sCiAgICB7CiAgICAgICJzdGVwIjogIndwLWNsaSIsCiAgICAgICJjb21tYW5kIjogIndwIHBvc3QgY3JlYXRlIC0tcG9zdF90aXRsZT0nRWxlY3Ryb25pYyBNdXNpYyBGZXN0aXZhbCBHdWlkZScgLS1wb3N0X3N0YXR1cz1wdWJsaXNoIC0tcG9zdF9jYXRlZ29yeT1tdXNpYyIKICAgIH0sCiAgICB7CiAgICAgICJzdGVwIjogIndwLWNsaSIsCiAgICAgICJjb21tYW5kIjogIndwIHBvc3QgY3JlYXRlIC0tcG9zdF90aXRsZT0nVGVubmlzIENoYW1waW9ucyBDcm93bmVkJyAtLXBvc3Rfc3RhdHVzPXB1Ymxpc2ggLS1wb3N0X2NhdGVnb3J5PXNwb3J0cyIKICAgIH0sCiAgICB7CiAgICAgICJzdGVwIjogIndwLWNsaSIsCiAgICAgICJjb21tYW5kIjogIndwIHBvc3QgY3JlYXRlIC0tcG9zdF90aXRsZT0nQ2xhc3NpY2FsIE11c2ljIGZvciBCZWdpbm5lcnMnIC0tcG9zdF9zdGF0dXM9cHVibGlzaCAtLXBvc3RfY2F0ZWdvcnk9bXVzaWMiCiAgICB9LAogICAgewogICAgICAic3RlcCI6ICJ3cC1jbGkiLAogICAgICAiY29tbWFuZCI6ICJ3cCBwb3N0IGNyZWF0ZSAtLXBvc3RfdGl0bGU9J0Jhc2ViYWxsIFNlYXNvbiBSZWNhcCcgLS1wb3N0X3N0YXR1cz1wdWJsaXNoIC0tcG9zdF9jYXRlZ29yeT1zcG9ydHMiCiAgICB9LAogICAgewogICAgICAic3RlcCI6ICJ3cC1jbGkiLAogICAg
ICAiY29tbWFuZCI6ICJ3cCBwb3N0IGNyZWF0ZSAtLXBvc3RfdGl0bGU9J0hpcCBIb3AgRXZvbHV0aW9uIERvY3VtZW50YXJ5JyAtLXBvc3Rfc3RhdHVzPXB1Ymxpc2ggLS1wb3N0X2NhdGVnb3J5PW11c2ljIgogICAgfSwKICAgIHsKICAgICAgInN0ZXAiOiAid3AtY2xpIiwKICAgICAgImNvbW1hbmQiOiAid3AgcG9zdCBjcmVhdGUgLS1wb3N0X3RpdGxlPSdNYXJhdGhvbiBSdW5uaW5nIFRpcHMnIC0tcG9zdF9zdGF0dXM9cHVibGlzaCAtLXBvc3RfY2F0ZWdvcnk9c3BvcnRzIgogICAgfSwKICAgIHsKICAgICAgInN0ZXAiOiAid3AtY2xpIiwKICAgICAgImNvbW1hbmQiOiAid3AgcG9zdCBjcmVhdGUgLS1wb3N0X3RpdGxlPSdJbmRpZSBNdXNpYyBTY2VuZSBSZXBvcnQnIC0tcG9zdF9zdGF0dXM9cHVibGlzaCAtLXBvc3RfY2F0ZWdvcnk9bXVzaWMiCiAgICB9LAogICAgewogICAgICAic3RlcCI6ICJ3cC1jbGkiLAogICAgICAiY29tbWFuZCI6ICJ3cCBwb3N0IGNyZWF0ZSAtLXBvc3RfdGl0bGU9J1N3aW1taW5nIENvbXBldGl0aW9uIFJlc3VsdHMnIC0tcG9zdF9zdGF0dXM9cHVibGlzaCAtLXBvc3RfY2F0ZWdvcnk9c3BvcnRzIgogICAgfSwKICAgIHsKICAgICAgInN0ZXAiOiAid3AtY2xpIiwKICAgICAgImNvbW1hbmQiOiAid3AgcG9zdCBjcmVhdGUgLS1wb3N0X3RpdGxlPSdDb3VudHJ5IE11c2ljIEF3YXJkcyBSZWNhcCcgLS1wb3N0X3N0YXR1cz1wdWJsaXNoIC0tcG9zdF9jYXRlZ29yeT1tdXNpYyIKICAgI
H0sCiAgICB7CiAgICAgICJzdGVwIjogIndwLWNsaSIsCiAgICAgICJjb21tYW5kIjogIndwIHBvc3QgY3JlYXRlIC0tcG9zdF90aXRsZT0nR29sZiBUb3VybmFtZW50IENoYW1waW9uc2hpcCcgLS1wb3N0X3N0YXR1cz1wdWJsaXNoIC0tcG9zdF9jYXRlZ29yeT1zcG9ydHMiCiAgICB9LAogICAgewogICAgICAic3RlcCI6ICJ3cC1jbGkiLAogICAgICAiY29tbWFuZCI6ICJ3cCBwb3N0IGNyZWF0ZSAtLXBvc3RfdGl0bGU9J1BvcCBNdXNpYyBUcmVuZHMgQW5hbHlzaXMnIC0tcG9zdF9zdGF0dXM9cHVibGlzaCAtLXBvc3RfY2F0ZWdvcnk9bXVzaWMiCiAgICB9LAogICAgewogICAgICAic3RlcCI6ICJ3cC1jbGkiLAogICAgICAiY29tbWFuZCI6ICJ3cCBwb3N0IGNyZWF0ZSAtLXBvc3RfdGl0bGU9J0hvY2tleSBMZWFndWUgU3RhbmRpbmdzJyAtLXBvc3Rfc3RhdHVzPXB1Ymxpc2ggLS1wb3N0X2NhdGVnb3J5PXNwb3J0cyIKICAgIH0sCiAgICB7CiAgICAgICJzdGVwIjogIndwLWNsaSIsCiAgICAgICJjb21tYW5kIjogIndwIHBvc3QgY3JlYXRlIC0tcG9zdF90aXRsZT0nQmx1ZXMgTXVzaWMgSGlzdG9yeScgLS1wb3N0X3N0YXR1cz1wdWJsaXNoIC0tcG9zdF9jYXRlZ29yeT1tdXNpYyIKICAgIH0sCiAgICB7CiAgICAgICJzdGVwIjogIndwLWNsaSIsCiAgICAgICJjb21tYW5kIjogIndwIHBvc3QgY3JlYXRlIC0tcG9zdF90aXRsZT0nQ3ljbGluZyBSYWNlIENvdmVyYWdlJyAtLXBvc3Rfc3RhdHVzPXB1Ymxpc2ggLS
1wb3N0X2NhdGVnb3J5PXNwb3J0cyIKICAgIH0sCiAgICB7CiAgICAgICJzdGVwIjogIndwLWNsaSIsCiAgICAgICJjb21tYW5kIjogIndwIHBvc3QgY3JlYXRlIC0tcG9zdF90aXRsZT0nTGF0aW4gTXVzaWMgUmlzaW5nIFN0YXJzJyAtLXBvc3Rfc3RhdHVzPXB1Ymxpc2ggLS1wb3N0X2NhdGVnb3J5PW11c2ljIgogICAgfSwKICAgIHsKICAgICAgInN0ZXAiOiAid3AtY2xpIiwKICAgICAgImNvbW1hbmQiOiAid3AgcG9zdCBjcmVhdGUgLS1wb3N0X3RpdGxlPSdSdWdieSBNYXRjaCBIaWdobGlnaHRzJyAtLXBvc3Rfc3RhdHVzPXB1Ymxpc2ggLS1wb3N0X2NhdGVnb3J5PXNwb3J0cyIKICAgIH0sCiAgICB7CiAgICAgICJzdGVwIjogIndwLWNsaSIsCiAgICAgICJjb21tYW5kIjogIndwIHBvc3QgY3JlYXRlIC0tcG9zdF90aXRsZT0nUmVnZ2FlIE11c2ljIEZlc3RpdmFsIFJldmlldycgLS1wb3N0X3N0YXR1cz1wdWJsaXNoIC0tcG9zdF9jYXRlZ29yeT1tdXNpYyIKICAgIH0sCiAgICB7CiAgICAgICJzdGVwIjogIndwLWNsaSIsCiAgICAgICJjb21tYW5kIjogIndwIHBvc3QgY3JlYXRlIC0tcG9zdF90aXRsZT0nQm94aW5nIENoYW1waW9uc2hpcCBGaWdodCcgLS1wb3N0X3N0YXR1cz1wdWJsaXNoIC0tcG9zdF9jYXRlZ29yeT1zcG9ydHMiCiAgICB9LAogICAgewogICAgICAic3RlcCI6ICJ3cC1jbGkiLAogICAgICAiY29tbWFuZCI6ICJ3cCBwb3N0IGNyZWF0ZSAtLXBvc3RfdGl0bGU9J0ZvbGsgTXVzaWMgVHJhZGl
0aW9ucycgLS1wb3N0X3N0YXR1cz1wdWJsaXNoIC0tcG9zdF9jYXRlZ29yeT1tdXNpYyIKICAgIH0sCiAgICB7CiAgICAgICJzdGVwIjogIndwLWNsaSIsCiAgICAgICJjb21tYW5kIjogIndwIHBvc3QgY3JlYXRlIC0tcG9zdF90aXRsZT0nVm9sbGV5YmFsbCBUb3VybmFtZW50IEZpbmFscycgLS1wb3N0X3N0YXR1cz1wdWJsaXNoIC0tcG9zdF9jYXRlZ29yeT1zcG9ydHMiCiAgICB9CiAgXQp9Cg==
this playground link] that will open a WP site and the browser and:
- Set up WordPress with PHP 8.3
- Configure permalinks to /%category%/%postname%/
- Create Sports and Music categories
- Generate 25 posts alternating between the two categories
- Log you in as admin (username: admin, password: password)
The blueprint loaded in the Playground link is this one:
{{{
{
"$schema": "https://playground.wordpress.net/blueprint-schema.json",
"landingPage": "/",
"preferredVersions": {
"php": "8.3",
"wp": "latest"
},
"steps": [
{
"step": "login",
"username": "admin",
"password": "password"
},
{
"step": "setSiteOptions",
"options": {
"permalink_structure": "/%category%/%postname%/"
}
},
{
"step": "runWpInstallationWizard",
"options": {
"adminUsername": "admin",
"adminPassword": "password"
}
},
{
"step": "wp-cli",
"command": "wp term create category Sports --porcelain"
},
{
"step": "wp-cli",
"command": "wp term create category Music --porcelain"
},
{
"step": "wp-cli",
"command": "wp post create --post_title='The Future of Professional
Basketball' --post_status=publish --post_category=sports"
},
{
"step": "wp-cli",
"command": "wp post create --post_title='Top 10 Rock Albums of the
Decade' --post_status=publish --post_category=music"
},
{
"step": "wp-cli",
"command": "wp post create --post_title='Olympic Games Highlight
Reel' --post_status=publish --post_category=sports"
},
{
"step": "wp-cli",
"command": "wp post create --post_title='Jazz Legends: A
Retrospective' --post_status=publish --post_category=music"
},
{
"step": "wp-cli",
"command": "wp post create --post_title='Soccer World Cup Preview'
--post_status=publish --post_category=sports"
},
{
"step": "wp-cli",
"command": "wp post create --post_title='Electronic Music Festival
Guide' --post_status=publish --post_category=music"
},
{
"step": "wp-cli",
"command": "wp post create --post_title='Tennis Champions Crowned'
--post_status=publish --post_category=sports"
},
{
"step": "wp-cli",
"command": "wp post create --post_title='Classical Music for
Beginners' --post_status=publish --post_category=music"
},
{
"step": "wp-cli",
"command": "wp post create --post_title='Baseball Season Recap'
--post_status=publish --post_category=sports"
},
{
"step": "wp-cli",
"command": "wp post create --post_title='Hip Hop Evolution
Documentary' --post_status=publish --post_category=music"
},
{
"step": "wp-cli",
"command": "wp post create --post_title='Marathon Running Tips'
--post_status=publish --post_category=sports"
},
{
"step": "wp-cli",
"command": "wp post create --post_title='Indie Music Scene Report'
--post_status=publish --post_category=music"
},
{
"step": "wp-cli",
"command": "wp post create --post_title='Swimming Competition
Results' --post_status=publish --post_category=sports"
},
{
"step": "wp-cli",
"command": "wp post create --post_title='Country Music Awards Recap'
--post_status=publish --post_category=music"
},
{
"step": "wp-cli",
"command": "wp post create --post_title='Golf Tournament
Championship' --post_status=publish --post_category=sports"
},
{
"step": "wp-cli",
"command": "wp post create --post_title='Pop Music Trends Analysis'
--post_status=publish --post_category=music"
},
{
"step": "wp-cli",
"command": "wp post create --post_title='Hockey League Standings'
--post_status=publish --post_category=sports"
},
{
"step": "wp-cli",
"command": "wp post create --post_title='Blues Music History'
--post_status=publish --post_category=music"
},
{
"step": "wp-cli",
"command": "wp post create --post_title='Cycling Race Coverage'
--post_status=publish --post_category=sports"
},
{
"step": "wp-cli",
"command": "wp post create --post_title='Latin Music Rising Stars'
--post_status=publish --post_category=music"
},
{
"step": "wp-cli",
"command": "wp post create --post_title='Rugby Match Highlights'
--post_status=publish --post_category=sports"
},
{
"step": "wp-cli",
"command": "wp post create --post_title='Reggae Music Festival
Review' --post_status=publish --post_category=music"
},
{
"step": "wp-cli",
"command": "wp post create --post_title='Boxing Championship Fight'
--post_status=publish --post_category=sports"
},
{
"step": "wp-cli",
"command": "wp post create --post_title='Folk Music Traditions'
--post_status=publish --post_category=music"
},
{
"step": "wp-cli",
"command": "wp post create --post_title='Volleyball Tournament
Finals' --post_status=publish --post_category=sports"
}
]
}
}}}
- Navigate to the Sports category `/category/sports/`
- Using the page navigation links, go to any page beyond the first one.
=== Expected Results
1. ✅ The page loads (`/category/sports/page/2/`) and the additional page
of posts displays.
=== Actual Results
1. ✅ The page loads (`/category/sports/page/2/`) and the additional page
of posts displays.
=== Additional Noteschat
Debug bar info
{{{
Request: category/sports/page/2
Query String: paged=2&category_name=sports
Matched Rewrite Rule: category/(.+?)/page/?([0-9]{1,})/?$
Matched Rewrite Query: category_name=sports&paged=2
}}}
--
Ticket URL: <https://core.trac.wordpress.org/ticket/8905#comment:19>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list