[wp-trac] [WordPress Trac] #21268: _wp_page_template is getting 'stuck' to a page
WordPress Trac
noreply at wordpress.org
Fri Oct 11 07:16:18 UTC 2013
#21268: _wp_page_template is getting 'stuck' to a page
--------------------------+------------------------------
Reporter: shawmutsteve | Owner:
Type: defect (bug) | Status: new
Priority: normal | Milestone: Awaiting Review
Component: General | Version: 3.4.1
Severity: normal | Resolution:
Keywords: |
--------------------------+------------------------------
Comment (by cbaldelomar):
This could be solved by changing the following line of code on line 659 in
file 'wp-admin/includes/meta-boxes.php'
{{{
if ( 'page' == $post->post_type && 0 != count(
get_page_templates() ) ) {
}}}
to
{{{
if ( 'page' == $post->post_type ) {
}}}
This would always cause a dropdown to be displayed in the Page Attributes
Meta Box even if "Default Template" is the only page template option.
[[Image(http://webplantmedia.com/assets/Screen-
Shot-2013-10-11-at-2.06.27-AM.jpg)]]
This could be a very frustrating experience for a new Wordpress user, who,
after switching themes, will no longer be able to update their post_meta
fields because their page template is "stuck" on some other themes page
template.
Consider this bit of code in 'wp-includes/post.php'. The code will fail
when checking for a valid page template, and never run the function,
update_post_meta(); So plugins like Yoast SEO or any other using custom
meta fields will not be able to save new inputs.
{{{
if ( !empty($page_template) && 'page' == $data['post_type'] ) {
$post->page_template = $page_template;
$page_templates = wp_get_theme()->get_page_templates();
if ( 'default' != $page_template && ! isset(
$page_templates[ $page_template ] ) ) {
if ( $wp_error )
return new
WP_Error('invalid_page_template', __('The page template is invalid.'));
else
return 0;
}
update_post_meta($post_ID, '_wp_page_template',
$page_template);
}
}}}
I hope this is helpful for someone and that this problem can get solved.
Replying to [ticket:21268 shawmutsteve]:
> Unmodified WP 3.4.1 / Ummodified TwentyEleven theme
>
> Create a page (id=2). Manually add a postmeta entry for
>
> {{{
> post_id=2,
> meta_key = _wp_page_template,
> meta_value = pagefull.php
> }}}
>
>
> The page now opens with margin: 0 7.6%; (correct!)
>
> Now try to change it back to default, either by removing the
_wp_page_template postmeta record or by editing the page -> Page Attribute
/ Template. The page will not revert back to Default. It continually
displays as Full Width, and a postmeta item telling post_id 2 to use
_wp_page_template = pagefull.php is added.
>
> http://wp34.roveridx.com/?page_id=2
>
> This behavior does not happen in 3.3.2.
--
Ticket URL: <http://core.trac.wordpress.org/ticket/21268#comment:2>
WordPress Trac <http://core.trac.wordpress.org/>
WordPress blogging software
More information about the wp-trac
mailing list