admin管理员组文章数量:1323029
I would like to keep my main theme as the active theme, but allow users to select a slightly different layout via the "Page/Post Attributes" panel. Ideally, I'd like to store this layout under my main theme's "styles" directory, in its own folder.
MyTheme > styles > My-special-Layout > style.css
So that in the "Page Attributes" panel, I see a template there called "My-special-layout"...
However, I have two issues...
I can't seem to get the "child" theme to appear in the "Page Attributes" panel. (I'm simply adding a folder under my main theme directory and placing a
style.css
file there that has the value "Template: my_main_theme_directory
"). But I never see any templates appear in the "page attributes" panel.I can't get the "Page Attributes" panel on the POST editor. I'd like to allow the template to be applied to Posts as well as Pages. How to get this panel on the post editor?
I would like to keep my main theme as the active theme, but allow users to select a slightly different layout via the "Page/Post Attributes" panel. Ideally, I'd like to store this layout under my main theme's "styles" directory, in its own folder.
MyTheme > styles > My-special-Layout > style.css
So that in the "Page Attributes" panel, I see a template there called "My-special-layout"...
However, I have two issues...
I can't seem to get the "child" theme to appear in the "Page Attributes" panel. (I'm simply adding a folder under my main theme directory and placing a
style.css
file there that has the value "Template: my_main_theme_directory
"). But I never see any templates appear in the "page attributes" panel.I can't get the "Page Attributes" panel on the POST editor. I'd like to allow the template to be applied to Posts as well as Pages. How to get this panel on the post editor?
2 Answers
Reset to default 4You're not doing child themes right. A child theme is a separate theme altogether that everyone must use, but relies on another theme for all template parts it doesn't provide. What you want is templates:
http://codex.wordpress/Theme_Development#Defining_Custom_Templates
Basically, just create a new theme file in the theme's root directory (e.g. foobar.php
) write this at the top:
/*
Template Name: Foobar
*/
That will give you a new template called Foobar (obviously, change Foobar to whatever you want. That's the name that will appear in the dropdown menu on the editor page).
As of now, WordPress only supports templates for pages and custom post types, not posts. There are ways to hack this, like checking for a post meta on posts and pulling it on template include:
function my_post_templater($template){
if( !is_single() )
return $template;
global $wp_query;
$c_template = get_post_meta( $wp_query->post->ID, '_wp_page_template', true );
return empty( $c_template ) ? $template : $c_template;
}
add_filter( 'template_include', 'my_post_templater' );
function give_my_posts_templates(){
add_post_type_support( 'post', 'page-attributes' );
}
add_action( 'init', 'give_my_posts_templates' );
If you put that code in your theme's functions.php
file, that should work (as long as you actually have custom templates in your theme folder).
For more information about child themes, read here:
http://codex.wordpress/Child_Themes
From wordpress 4.7+ you can put 'Template Post Type' in your custom template file to display it in page attribute for both page and post.
/*
Template Name: Your Template Name
Template Post Type: post, page
*/
本文标签: themesAdding a Template to the Page Attributes Panel for both Posts and Pages
版权声明:本文标题:themes - Adding a Template to the Page Attributes Panel for both Posts and Pages? 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1742109645a2421185.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论