回答:
はいといいえ。
別の子テーマを親として指定して子テーマを作成すると、WordPressがそれを使用しようとします。
しかしながら
コア開発者がこれは望ましくない動作であると明示的に述べていることは言うまでもなく、問題にぶつかります。彼らは孫のテーマをサポートする努力をしません。
たとえば、WP APIはスタイルシートとテンプレートURL /ディレクトリを区別します。スタイルシートは常にアクティブなテーマを参照し、テンプレートは親テーマをget_template_directory_uri
参照しますが、祖父母テーマが含まれている場合、親または祖父母を参照しますか?現在、多くのAPI呼び出しがあいまいであり、コアに含まれるコードを含め、さまざまな人々がさまざまな動作を期待しています。またfunctions.php
、親または祖父母のいずれかをロードし、正しい順序で実行されることを確認する必要があります。
また、非常に悪い習慣と見なされます。孫のテーマが必要な場合は、アプローチが間違った方向に進んでいるので、一歩下がって物事を再評価する必要があります。
孫のテーマの概念を避けることをお勧めします、それはより多くの問題につながるでしょう。代わりに、より多くのフックが子テーマのアクションとモジュール性をフィルタリングすることで、子テーマの共有コンポーネントを同じ状態に保ち、分岐/分岐を簡単に行うことができます。一般的な要素をsvn external / gitサブモジュールに移動してみてください。
子/オーバーライドではなく、コピーで作業する意図を持つ親としてではなく、子テーマをベースにしてフォークする_sモデルもあります。
以下に説明する方法や、通常の「孫」テーマも完全にはテストしませんでしたが、template_includeフィルターの機能を提供しました。
/*
Plugin Name: Grandchild Themes
Plugin URI: http://www.who-cares.com/
Description: A concept for Grandchild themes Plugin
Author: See Plugin URI
Version: 0.0.0.0.1-Alpha
*/
add_action('wp_head', 'grnd_chld_add_headers', 0);
add_action('init', 'grnd_chld_add_css');
// Load template if exists.
function grandchild_template_include( $template ) {
if ( file_exists( untrailingslashit( plugin_dir_path( __FILE__ ) ) . '/grnd_chld_templates/' . basename( $template ) ) )
$template = untrailingslashit( plugin_dir_path( __FILE__ ) ) . '/grnd_chld_templates/' . basename( $template );
return $template;
}
// This is the actual filter that we want .
add_filter( 'template_include', 'grandchild_template_include', 11 );
function grnd_chld_add_headers () {
wp_enqueue_style('my_grandchild_style');
}
function grnd_chld_add_css() {
$stamp = @filemtime(plugin_dir_path(__FILE__).'/style.css'); // easy versioning
wp_register_style ('my_grandchild_style', plugins_url('style.css', __FILE__).'', array(), $stamp);
}
// From here , what you got is like a normal functions.php.
同様の方法で、たとえばarchive_templateのようなより具体的なフィルターを試すこともできます
add_filter ('archive_template', create_function ('', 'return plugin_dir_path(__FILE__)."archive.php";'));
言ってやったことはすべて、それが物事を行う最良の方法であるかどうかはわかりません。