I'm struggling with Wordpress url structure...

  • My page for posts is domain.com/resources
  • My category url structure is domain.com/resources/[cat-slug] (I changed the category base in the WP permalink structure)
  • My post url structure is domain.com/[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');

    // 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');
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 ?


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.