[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