I have a custom post type called ‘projects’ (pastebin) and I have a page called Projects set up in my dashboard which is set to display the Projects template. (pastebin)
The problem is when I use WP_PageNavi to incorporate pagination and click on page 2, I get an error 404. I read somewhere that this is because custom post types and pages can’t have the same name. And I’ve found that to be true because I tried changing the page name to “Projects 2” and it worked.
But when I change the name of the custom post type, that gets reflected in the url. So if I change the custom post type to ‘projects2’ instead of just ‘projects’, the url now looks like this: mysite.com/projects2/single-post
I have my custom permalinks set to /%category%/%postname%/ by the way.
Likewise, I can’t change the name of the page to ‘Projects 2’ for aesthetic reasons.
So how would I get around this? This has been driving me crazy for many hours. I would really appreciate any helpful advice!
As you can see in the rewrite analyzer,
/projects/page/2/
setsprojects=page&page=/2
instead ofpagename=projects&paged=2
as we would like. So you just need to add a rewrite rule for this special case (in theregister_projects()
function, after you register your custom post type, would be a good place):Remember to flush your rewrite rules, by visiting the Permalinks page or by some other way.
Its a better way, you build your own paginatin:
or via custom solutions, see this 2 posts: