12

Basic question, but I want to enable page templates. I have one theme which has page templates enabled. I switched to another but there is no option to change the template, even when creating a new page. How do I switch this option on? I've had a root around on the Codex and forum but can't find it.

4 Answers 4

9

Chances are that the theme you've switched to has no page templates defined - they exist on a per theme basis.

Here's the Codex reference: https://wordpress.org/support/article/pages/

1
  • Thanks. Looks like what I wanted to do is not possible. I have a widget that sits in the sidebar which searches a webservice. The results go into a custom template which as you say has to be built on a theme by theme basis. So it will never be a generic widget. Mar 21, 2011 at 16:11
8

Define your template name in the custom template file.

  <?php
/*
Template Name: demo
*/
?>

After this the select template option will be available on the edit screen. You can choose the desired name you want.

2
  • not true. something else must be done, since my templates dissapeared
    – NickNo
    Aug 6, 2014 at 11:12
  • In 2022 this works for me. I don't have the same issue as OP. I was just trying to understand why the file I created in the templates folder wasn't showing up as a template. The answer told me that WordPress doesn't see it as a template without Template Name: SOMETHING at the top. Mar 18, 2022 at 10:15
0

There is another reason why you may not see the Page Template dropdown fiels in your page editor. If you are creating a global page template (one that can be used for any page, you need to ensure that you do not name of your template file with the page- prefix, else WP interpret this as a special template for use on page slugs matching the rest of the name.

From the page template codex:

Important! Do not use page- as a prefix, as WordPress will interpret the file as a specialized template, meant to apply to only one page on your site.

and finally make sure you insert the following comment at the top of the page:

/* Template Name: Name-of-your-template */

-1

Allow page template support to you theme by adding this function in your functions.php file:

function is_page_template( $template = '' ) {
    $page_template = get_page_template_slug( get_queried_object_id() );

    if ( empty( $template ) )
        return (bool) $page_template;

    if ( $template == $page_template )
        return true;

    if ( is_array( $template ) ) {
        if ( ( in_array( 'default', $template, true ) && ! $page_template )
            || in_array( $page_template, $template, true )
        ) {
            return true;
        }
    }

    return ( 'default' === $template && ! $page_template );
}

Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.