4
votes

I'm running Wordpress 3.3.1.

I'm writing a child theme that modifies the default twentyeleven theme. Everything seems normal, except that when I add a custom page template, it doesn't appear in the add/edit screen (so I can't use it!).

To elaborate on "normal", here's what IS working: My child theme appears and activates normally. My CSS code (in style.css) is appearing. My files from the template hierarchy are working (ex: front-page.php, page.php)

I've read and reread the codex, and my custom page template file ("coming-soon.php") seems to have the correct header:

<?php
 /*
  Template Name: Coming Soon
 */

So why won't it show up under the "Template" drop-down???

I've added custom templates dozens of times and never had this problem. The only possible difference I can think of is that I'm writing a child theme (even though the codex says this shouldn't matter), or perhaps it's a difference in the newest update of WP.

4
Have you tried adding this page template to another theme (or even 2011 itself) to see if it's a problem in the theme?Anca

4 Answers

9
votes

I can't duplicate what you're seeing with a clean install of WordPress 3.3.1. I have a theme with just two files, style.css, containing:

/*
Theme Name:     stackoverflow-8946077
Template:       twentyeleven
Version:        0.0.1
*/
@import url("../twentyeleven/style.css");

and coming-soon.php, containing:

<?php
 /*
  Template Name: Coming Soon
 */

get_header();
?><h1>Coming Soon</h1><?php
get_footer();
?>

the first part of which was copied from your question.

I see the template as expected:

WordPress templates

The only things I can think of are to double-check:

  • the file exists on the server you're running on
  • the file's in the child template's directory (though it should work if it's in the twentyeleven directory)
  • there's no file with the same name in the twentyeleven directory, which (I think) would take precedence
  • the file name ends in .php
  • you only have a single space between "Template" and "Name:" (the regex used contains the literal Template Name:)

Failing that, the dropdown is populated by the get_page_templates function in wp-admin/includes/theme.php. Might be worth sticking some debug code in there to see if the $templates variable includes coming-soon.php.

2
votes

This is an old thread. But if anyone is looking for solutions now, it may be the issue in WP 4.9. More details: Templates not working properly

1
votes

In my situation, it ended up being the file permissions. I set it to 755 or whatever the standard WP permission is (in regards to security) and it worked!

0
votes

Mine also ended up being the file permissions.

I set it to 777, and it worked like a charm!