メインテーマをアクティブテーマのままにしておきたいのですが、 "Page/Post Attributes" パネルを介してユーザーが若干異なるレイアウトを選択できるようにします。理想的には、このレイアウトをメインテーマの "styles" ディレクトリの下に、それ自身のフォルダに保存したいです。
MyTheme>スタイル>私の特別なレイアウト> style.css
"Page Attributes" パネルに、 "My-special-layout" ...という名前のテンプレートがあります。
しかし、私は2つの問題があります...
"child" テーマを "Page Attributes" /パネルに表示させることができないようです。 (私のメインテーマディレクトリの下にフォルダを追加し、そこに値 "style.css
"を持つTemplate: my_main_theme_directory
ファイルを置くだけです)。しかし、「ページ属性」パネルにテンプレートが表示されることはありません。
POSTエディタで "Page Attributes" パネルが表示されません。テンプレートを 投稿 および ページ に適用できるようにしたいです。ポストエディタでこのパネルを取得する方法
あなたは子供のテーマを正しくやっていません。子テーマは、すべての人が使用する必要がある個別のテーマですが、提供されていないすべてのテンプレート部分については別のテーマに依存しています。欲しいのはテンプレートです。
http://codex.wordpress.org/Theme_Development#Defining_Custom_Templates
基本的には、テーマのルートディレクトリに新しいテーマファイルを作成するだけです(例:foobar.php
)。
/*
Template Name: Foobar
*/
それはあなたにFoobarと呼ばれる新しいテンプレートを与えるでしょう(明らかに、あなたが望むものにFoobarを変えてください。それはエディタページのドロップダウンメニューに現れる名前です)。
現時点では、WordPressはページとカスタム投稿タイプのテンプレートのみをサポートし、投稿はサポートしていません。これをハックする方法はいくつかあります。例えば、投稿上の投稿メタをチェックしたり、テンプレート上で引っ張ったりすることです。
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' );
そのコードをあなたのテーマのfunctions.php
ファイルに入れても、それはうまくいくはずです(あなたが実際にあなたのテーマフォルダにカスタムテンプレートを持っている限り)。
子供のテーマの詳細については、こちらを参照してください。