トピック投稿者
Anonymous User 4963935
(@anonymized-4963935)
上記のコメントで書き忘れましたが、わたしはWordPressに関しては10月から始めた初心者です。
よろしくお願いします。
doganteさん、こんにちは。
スマートなのは、デフォルトテーマを選択したときに、外観メニューに追加される「カスタムヘッダー」のようにメニューを追加し、そこでヘッダーの背景色や配色を選択できるようにする方法かと思います。
ただし、それなりにWordPressへの理解が必要だと思いますので、手軽く実装するなら複数テーマを用意しておく方法ですね。
メニューを追加する方法は、デフォルトテーマのfunctions.phpが、まんま参考になります。
add_action('admin_menu', 'kubrick_add_theme_page');
でadmin_menuフックにkubrick_add_theme_page関数が追加されます。
この関数が実行されると、カスタムヘッダー関連の設定保存・更新処理が実行されています。いくつか記述されているupdate_option関数は、DBのoptionsテーブルを更新する命令ですね。
当該関数の最後の方に記述されている
add_theme_page(__('Custom Header'), __('Custom Header'), 'edit_themes', basename(__FILE__), 'kubrick_theme_page');
が外観メニューにサブページを追加する命令です。最後の引数 kubrick_theme_pageがサブメニューをクリックしたときに実行される関数名ですね。
もし、複数テーマを用意しておく方法を採るのであれば、1つのテーマだけ各種テンプレートを用意し、それ以外のテーマはstyle.cssのみのテーマにしておくと、後々のメンテナンスが楽になります。
この手法はcodexのテーマの作成 > テーマスタイルシートに書いてありますので参考にしてみてください。
トピック投稿者
Anonymous User 4963935
(@anonymized-4963935)
jim912さん
ご回答、ありがとうございました。
>もし、複数テーマを用意しておく方法を採るのであれば、1つのテーマだけ各種テンプレートを用意し、
>それ以外のテーマはstyle.cssのみのテーマにしておくと、後々のメンテナンスが楽になります。
現状では、上記の方法が私に一番むいているようです。
>この手法はcodexのテーマの作成 > テーマスタイルシートに書いてありますので参考にしてみてくだ
>さい。
上記のリンク確認させていただきました。上記のcodexページで一つ分からないことがあったのですが、「codex」の「テーマスタイルシート 」項目に
「さらに (WordPress 2.7 の時点では)、子テーマはテンプレートファイルを含む事もできます。このファイルは通常の通り管理パネルから選択して、親テーマ内の同名のファイルより優先させることができます。 」
という説明がありましたが、この操作(子テーマのテンプレートファイルを親テーマ内の同名のファイルより優先させる)はWordPress2.4.8の場合、どこから行なうのでしょうか?
よろしくお願いします。
doganteさん、こんにちは。
「さらに (WordPress 2.7 の時点では)、子テーマはテンプレートファイルを含む事もできます。このファイルは通常の通り管理パネルから選択して、親テーマ内の同名のファイルより優先させることができます。 」
という説明がありましたが、この操作(子テーマのテンプレートファイルを親テーマ内の同名のファイルより優先させる)はWordPress2.4.8の場合、どこから行なうのでしょうか?
これについては、私も試していなかったので推測にはなるのですが、子テーマに同名のテンプレートが存在する場合は、自動的に子テーマのテンプレートが利用されると理解しています。
明日検証してみようと思いますが、もし分かったら教えていただけると助かります。
トピック投稿者
Anonymous User 4963935
(@anonymized-4963935)
jim912さん
ご回答、ありがとうございました。
了解しました。色々試しているうちに分かれば記載しときます。
一様、この件は解決済みとさせていただきます。
doganteさん、こんにちは。
検証してみました。
defaultテーマをディレクトリごとコピーし、ディレクトリ名とテーマ名を変更、親テーマをdefaultとし、CSS、画像以外を一旦全て削除。
子テーマを有効にして動作することを確認した後、index.phpのみdefaultから再度コピーし、ソースを一部改変したところ、index.phpのみ子テーマのindex.phpが利用され、それ以外のテンプレートについては、親テーマのテンプレートが利用されていました。