I'm struggling with Wordpress url structure...
- My page for posts is
domain/resources
- My category url structure is
domain/resources/[cat-slug]
(I changed the category base in the WP permalink structure) - My post url structure is
domain/[cat-slug]/[article-slug]
So far, so good.
I want to create sub-pages under my /resources/
page, but it does not works : it create 404 response.
I think WP is looking for a category when I request /resources/url-of-my-child-page
, and it cannot display my page
One solution could be to use something like that :
function loadPageFirst() {
// get the actual category
$actualCategory = get_category( get_query_var('cat') );
// get the page with the same slug
$matchingPage = get_page_by_path( $actualCategory->slug );
// If no match, load the normal listing template and exit (edit if you are using a custom listing template, eg. category.php)
if (!$matchingPage) {
include( get_template_directory() . '/archive.php');
die();
}
// Make a new query with the page's ID and load the page template
query_posts( 'page_id=' . $matchingPage->ID );
include( get_template_directory() . '/page.php');
die();
}
add_filter( 'category_template', 'loadPageFirst' );
as it's explained here but it's not very neat IMO...
Do you have any idea of how to display a page if it exist instead of a category ?