How to create a wordpress template without using any page

I’m not sure WordPress was build for this, but this is what I’m trying to achieve:

  • I want to make a specific URL inside wordpress accessible, for example www.example.com/some-template .
  • This specific URL should be editable from a php file, part of an existing wordpress theme I’m working on, something like some-template.php)
  • This is the tricky part: I don’t want wordpress users to be able to see or use this template from the custom templates dropdown menu when editing a page. I don’t want a specific page to exist in order for this to work. This template should work without any page (I’m not interested in creating a page and hiding it, or hiding the template).

The reason I’m trying to do this, is that I want to have a specific template that pieces together a few pages and menus from wordpress and creates some kind of a ‘custom view’ which is pulled every few hours to another site. It’s all part of a bigger picture (the details are not that important).

Read More

While searching, I only found out that it’s possible to create custom templates for at least one page, but then that page must exist in wordpress for the template to work.

Does anyone have an idea of how to achieve this?

Related posts

2 comments

  1. You may use template_redirect action:

    add_action( 'template_redirect', 'wpse131387_template_redirect' );
    function wpse131387_template_redirect( ){
        if ($_SERVER['REQUEST_URI'] == '/some-template') {
            global $wp_query;
            $wp_query->is_404 = false;
            status_header(200);
            include(dirname(__FILE__) . '/some-template.php');
            exit();
        }
    }
    
  2. You could do it the very simple way, putting your file some-template.php in the root directory of your WordPress install.

    Adding this to your .htaccess will use the some-template.php for the url www.mysite.com/some-template

    RewriteRule ^some-template$ ./some-template.php$1  
    

    In your some-template.php you load WordPress, including wp-load.php

    include('wp-load.php');
    //all your custom goodies
    

    Now you have access to all WordPress functions, and you do not need to have a page in the database.

    Please be aware that if someone creates a page some-template, you may get an error, as the page is not visible due to your custom file.

Comments are closed.