まず、function.php
ではなくfunctions.php
ですね、分かってらっしゃると思いますが;)
で、その回のWordBench埼玉に出席しておりました。
うろ覚えで申し訳ないのですが、親のfunctions.php
には親のみの記述があるらしく、そのまま子にコピーではだめらしいです。
子のfunctions.php
を読んで親のfunctions.php
を読みにいく、かつ、親のfunctions.php
にはfunction_exists()
されているので二重定義になることもないようですので、追加で必用な部分のみ子のfunctions.php
に記述すれば良いようです。
うろ覚えで間違っていたらごめんなさい・・・
mimisukeさん こんにちは
wordPressのfunctions.phpの挙動に関してCODEXは以下のように解説しています。
http://wpdocs.sourceforge.jp/%E5%AD%90%E3%83%86%E3%83%BC%E3%83%9E
私自身もfunctions.phpのおかしな挙動に四苦八苦しました。
http://ja.forums.wordpress.org/topic/4563?replies=5
function.phpだけは、子テーマのフォルダに移すと正しく動作しなくなります。
2重に読み込んでエラーになっているのか、親テーマの必要なスクリプトが読み込まれていなくて正しく動作しないのかわかりませんが、
3.0の挙動は、2.9xの子テーマの挙動と異なり、最低限style.cssと、pngファイルがあれば使えたものが、3.0では、sidebar.phpなども読み込まないなど、動作が異なっているようです。
いずれにしろ、現在の状態に合わせたテーマを運用して様子を見るのがいいのかなぁと思っています。
あてずっぽになりますが、親テーマのfunctions.phpをコピーしてエラーが発生するなら、空のfunctions.phpをおいておくことで様子を見てはいかがでしょうか
3.0の挙動は、2.9xの子テーマの挙動と異なり、最低限style.cssと、pngファイルがあれば使えたものが、3.0では、sidebar.phpなども読み込まないなど、動作が異なっているようです。
これは2.9までのdefaultテーマに依存したやり方の場合ですね。おそらく3.0からはdefaultテーマが存在しないためTwentyTenの子テーマとして作成しない限り足りないテンプレートをdefaultから読んでくるような使用方法は無理だと思います。
cssに子テーマとしての記述を行い、TwentyTenを利用するというやり方が今後主流になるのではないでしょうか。(TwentyTenは簡易テーマフレームワークですね)
mimisukeさんの紹介しているスライドショーにもあるとおり、sidebarなどもget_template_part
で親から読み込める(子になければ親を読む)ので今までのテーマは見直しが必要になるのかもしれませんね。
shokun0803さん、nobitaさん ありがとうございます。
たしかにfunctionsです。すいません
お二人のお話から、だいたいイメージがつかめました。
これをもとに試行してみたところ、私の関数ではうまくいかなったのですが
http://wpdocs.sourceforge.jp/Child_Themes
で、具体的なイメージが書かれていて、それだけをしたところ
反映されました。
私の作った関数は、途中に?>を検索の文字として指定しているため
同様にしても動かないようですが、通常はこれでうまく動くようです。
どちらかというと
<?php ?> のなかで、 >?といった文字をどう扱うべきか
ということに帰着するようで、別途調べて対処することにします。
お騒がせしました。
ありがとうございました。
すいません。
よく考えたら、twentytenのfunctions.phpを直に直していた時は
<?php ?> のなかで、 ’?>’を扱っていたので
ここは特別問題はありませんでした。
まず、twentytenと子テーマに二重に書いちゃう個所があるので
それを省いて再トライしてみます。(あまり関係ない気もするのですが)
twentytenはテーマのアップデートでファイルが上書きされてしまうので子テーマに必用な関数だけ記述する、親テーマでいらない関数(あっては困る関数)は、先に子テーマで定義してしまうなど、親テーマをなるだけ修正しない方向で検討した方が無難だと思います。
関数の二重定義くらいならエラー表示ONにしていれば簡単に分かる気がするので、エラーを確認しながら行うといいかもしれませんねъ(`ー゜)
shokun0803さん ご連絡いただきありがとうございます
また、返信が遅くなりすいませんでした。
おっしゃる通りで、twentytenフォルダ配下の関数定義をやめるように
移行中でしたが、残っているものがあって、
結局は、それが原因というか子テーマとの二重定義になり
エラーし、真っ白な画面表示になってしまっていました。
エラー表示ONというのはやったことが無いのですが、
どこかのメニューでON操作できるのでしょうか?
過去のFAQとか見て、今後の為に確認しておこうと思います。
ともかく、本日 親テーマはデフォルトの状態で
子テーマのfunctions.phpに、記載を追加していく
方法で無事やりたいことができました。
ご対応に感謝いたします。
ありがとうございました
エラー表示ONというのはやったことが無いのですが、
どこかのメニューでON操作できるのでしょうか?
これはWordPressの機能とか言うわけではなく、php、もしくはhtaccseeで制御するものです。
htaccessが許可されていて、php flagなどが使えるのであればhtaccessで、だめならphpに直接記述で、どちらも許可されていないサーバーならあきらめの方向で;P
htaccessの場合は、php_flag display_errors On
の記述を。
phpに直接記述する場合は、スクリプトの先頭に<?php error_reporting(E_ALL); ?>
を記述。ただし、php.iniでdisplay_errors = off
だとやっぱり表示されないようです。
どちらを使用した場合も、エラーを確認した後はちゃんと消しましょう;)
shokun0803さん リプライありがとうございます。
そういう便利なものがあったのですね。
サーバはさくらのレンタルサーバを使用しておりまして
htaccessも使用できていますので、早速試してみたいと思います。
詳しく書いていただいたので、できそうな気がします
貴重な情報をありがとうございます m(_o_)m