サポート » テーマ » TwentyTen 子テーマのfunction.phpの設定の仕方

  • 解決済 mimisuke

    (@mimisuke)


    まず、TwentyTenの作成に関係した全ての方に感謝。
    すばらしいテーマで満足しています。

    これに自分流のカスタマイズをして楽しんでおりますが、
    先日、
    http://www.slideshare.net/yorozu/about-twentyten-on-wordpress3
    を拝見したところ、Wordpressのバージョンアップと共に
    フォルダが上書きされてしまうとのこと。
    これは困ったことなので、そこにかかれていた
    子テーマという書き方を実践しました。

    基本的にうまく動いているのですが
    function.phpだけは、子テーマのフォルダに移すと正しく動作しなくなります。
    バージョンアップ等で上書きされてもよいfunction.phpのおき方を
    どなたかご教授いただけないでしょうか?

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • まず、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で親から読み込める(子になければ親を読む)ので今までのテーマは見直しが必要になるのかもしれませんね。

    トピック投稿者 mimisuke

    (@mimisuke)

    shokun0803さん、nobitaさん ありがとうございます。
    たしかにfunctionsです。すいません

    お二人のお話から、だいたいイメージがつかめました。
    これをもとに試行してみたところ、私の関数ではうまくいかなったのですが

    http://wpdocs.sourceforge.jp/Child_Themes

    で、具体的なイメージが書かれていて、それだけをしたところ
    反映されました。

    私の作った関数は、途中に?>を検索の文字として指定しているため
    同様にしても動かないようですが、通常はこれでうまく動くようです。

    どちらかというと
    <?php ?> のなかで、 >?といった文字をどう扱うべきか
    ということに帰着するようで、別途調べて対処することにします。

    お騒がせしました。

    ありがとうございました。

    トピック投稿者 mimisuke

    (@mimisuke)

    すいません。
    よく考えたら、twentytenのfunctions.phpを直に直していた時は
    <?php ?> のなかで、 ’?>’を扱っていたので
    ここは特別問題はありませんでした。

    まず、twentytenと子テーマに二重に書いちゃう個所があるので
    それを省いて再トライしてみます。(あまり関係ない気もするのですが)

    twentytenはテーマのアップデートでファイルが上書きされてしまうので子テーマに必用な関数だけ記述する、親テーマでいらない関数(あっては困る関数)は、先に子テーマで定義してしまうなど、親テーマをなるだけ修正しない方向で検討した方が無難だと思います。

    関数の二重定義くらいならエラー表示ONにしていれば簡単に分かる気がするので、エラーを確認しながら行うといいかもしれませんねъ(`ー゜)

    トピック投稿者 mimisuke

    (@mimisuke)

    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だとやっぱり表示されないようです。

    どちらを使用した場合も、エラーを確認した後はちゃんと消しましょう;)

    トピック投稿者 mimisuke

    (@mimisuke)

    shokun0803さん リプライありがとうございます。

    そういう便利なものがあったのですね。
    サーバはさくらのレンタルサーバを使用しておりまして
    htaccessも使用できていますので、早速試してみたいと思います。

    詳しく書いていただいたので、できそうな気がします

    貴重な情報をありがとうございます m(_o_)m

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • トピック「TwentyTen 子テーマのfunction.phpの設定の仕方」には新たに返信することはできません。