WordPressのカスタマイズやサイトの高速化、その他色々な機能を追加する時に必要になるのがfunctions.phpなのですが、子テーマに「functions.php」を追加する時には注意が必要です。
親テーマの「functions.php」の記述と子テーマの「functions.php」の記述が重複したり、記述ミスがあるとブログの表示が真っ白になったり、色々な不具合がある場合がありますのでちょっと解説しておきます。
子テーマにfunctions.phpを作成する
「functions.php」を追加する場合には他の子テーマのように親テーマの記述をコピーするのではなく、白紙で作成しておきます。つまり、ファイル名だけ書いて保存すればOKです。
親テーマと同じ記述をすると前述したようにブログが表示されない状態になります。まあ、記述をミスってもFTPからこのファイルの記述を元に戻すか子テーマの「functions.php」を削除すればOKですので心配は無用です。
ここまでできたらWordPressに戻り、「外観」⇒「テーマの編集(エディタ)」と進み、先ほど作成した「functions.php」を開きます。
functions.phpでは一番最初の部分に以下の記述をしておき、この後に全ての処理を書いていきます。
<?php //ここに処理を記述していきます
実際のファイルはこんな感じに記述していきます。
以上子テーマに「functions.php」を追加する方法でした。
コメント
匿名様
コメントありがとうございます。カスタマイズが反映されない場合に考えられる原因の1つにキャッシュがあります。今回もこれが影響しているかは分かりませんが、インストールされているプラグインをチェックして、キャッシュ系のプラグインを一度全て停止してみて下さい。
キャッシュ系のプラグインを停止したら再度カスタマイズをしてみてブログを表示させ、「Ctrl」と「F5」を一緒に押してリロードして確認します。それで反映されるかどうか確かめてもらえますか?
それと、時々プラグインの不具合が発生する場合があります。その場合はプラグインを停止しても停止できないみたいな事もありますので、その辺一度チェックしてみて下さい。もし何か挙動のおかしいプラグインなどがあれば再度コメントもらえると助かります。
また、分からない場合にはお使いのプラグインを教えて下さい。どうぞよろしくお願いします。
しげぞう様
一つお尋ねしたいことがあるのですが、記事の省略において「…」を「続きに読む」へ変更する記述をfunctions.php にコピーしたのですが、どうも記事を省略する最後の文字が「…」ではなく「?」になってしまいます。そこでソースコードの見直しをして、記載の修正をしたのですが、今度はソースコードを変更しても、ブログにそれが反映されなくなってしましました。functions.phpそのものを削除しても、ソースコードそのものを削除してもブログに影響がありません。適切な対処法というものはあるのでしょうか。
しげぞう様へ
またも、ご回答をいただきまして、
大変ありがとうございます。m(__)m
加藤です。
はい、テーマはStingerです。
確かに「親テーマの記述を削除して子テーマに移行する」ならば、
子テーマに記述でも上手くいくかもしれませんね。
しかしながら、しげぞう様のおっしゃるとおり、
テーマを更新した時に初期状態に戻ると思いますので、
(といいますか、おそらくWP真っ白状態の再現になるのでは?)
「functions.php」を編集する場合は親テーマの変更をして、
その都度、変更内容を記録しておくようにします。
そして、テーマ更新の時にその部分を修正すれば良いですね。
ご回答いただきまして。ありがとうございました。
今後も、しげぞう様のブログを拝見させていただき、
参考にさせていただきます。
役立つ情報を提供していただきまして、ありがとうございます。m(__)m
加藤様
返信ありがとうございます。テーマはStingerですか?Stingerの場合にはカスタム機能として簡単にヘッダー画像などを設定できるようになってます。このヘッダーサイズがfunctions.phpに記述されていますので、これは親テーマの変更になりますね。
親テーマの記述を削除して子テーマに移行するという考えもありますが、どちらにしてもテーマを更新した時に初期状態に戻るため意味がないかもですね。
なので、親テーマで編集をして、テーマ更新の時に初期状態に戻るかもしれませんので、更新の時には再度同じ場所を確認し、変更する必要があるかと思います。
しげぞう様へ
再びのご回答をいただきまして、
大変ありがとうございます。m(__)m
加藤です。
なるほど~勉強になります。
私は今回、下記のサイトを見て、「ヘッダー画像の大きさを変更」しようとして、子テーマのfunctions.phpに記述をして失敗したのです。
しげぞう様のブログを読ませていただきますと、
「親テーマの「functions.php」と同じ記述があると機能しない」とございました。
なるべく子テーマで編集をしたいのですけども、
この場合は、子テーマではなく、親テーマの「functions.php」を編集するしか方法がないのかな~と思っております。
つまり、
「Style.css」の編集→子テーマに記述を追加でOK。
「functions.php」の編集→親テーマを編集するしかないのか?
ご回答いただいきまして、ありがとうございました。m(__)m
加藤様
返信ありがとうございます。とりあえず復元できたようで良かったです。私の場合は最初にFTPで子テーマに白紙状態のfunctions.phpを作成して、後はWordPressのテーマの編集から直接記述を追加していくようなスタイルです。特に別のエディタを使ってはいません。
私の場合も時々functions.phpの編集でエラーがでますが、原因は2つです。1つは単純にコードのミス。2つ目はキャシュ系のプラグインです。特に私の場合は「WP File Cache」というプラグインが原因の事が多いです。プラグインを停止で解決する事が多いです。
functions.phpの編集は親テーマでも良いのですが、親テーマが更新する度に初期状態に戻りますので、個人的にはやはり子テーマの利用が良いと思います。
しげぞう様へ
ご回答をいただきまして、
大変ありがとうございます。m(__)m
加藤です。
サイトが真っ白になった後、元に戻せずに…
ネットを数時間さまよっていたのですけども、
バックアッププラグインのBackWPupを入れていたのを思い出しまして、
初めてそれを解凍したところ、子テーマの「functions.php」も
ありました。
そこで、それをFFFTPから、アップロードしたところ、
表示が崩れていたサイトは元に戻りました。
あと、ネットをさまよっている時に知ったのですけども、
「functions.php」はいわゆるWindowsの『メモ帳』でいじっては、
いけなかったようで、これを知らなかったのが、大きな原因のようです。
「UTF-8(BOM無し)」で保存できないとダメなのですね。
FFFTPから「functions.php」を開いて
記述を元(編集前の状態)に戻しても保存できずに、
記述が元(編集後のエラー状態)に戻ってしまったのはこういうことだったのかもしれません。
子テーマからいじろうとした部分は、
親テーマの「functions.php」を直接書き換えて対応しました。
今回、「functions.php」の怖さを知りました。(^_^;)
上記を踏まえまして質問です。
①WPの管理画面上から子テーマの「functions.php」をいじったら、
画面真っ白エラー状態になったので、
「functions.php」の変更は親テーマの方が良いのでしょうか?
②DLした状態の「functions.php」の編集には
「「UTF-8(BOM無し)」で保存可能な
エディタが必要なようですけども、DLしない状態で、
FFFTPから直接サーバー上にある「functions.php」等のファイルを
編集することは良くないのでしょうか?(エディタの問題もある?)
お手すきの際にでもコメントを頂けましたら嬉しいです。
今回のコメント本当にありがとうございます。m(__)m
加藤様
コメントありがとうございます。functions.phpの編集ですが、これは元に戻せば元の状態に戻るはずです。ただ、利用しているプラグイン、特にキャッシュ系のプラグインが邪魔をしている場合がありますので、一度プラグインを全部一時的に停止してから試してみると良いと思います。もしどうしても子テーマの表示が崩れる場合には一度URLを教えて頂けると助かります。また、その場合にはどのように崩れているのかも教えて頂けると原因が絞られると思いますので、どうぞよろしくお願い致します。
WordPress初心者です。
質問させていただいてもよろしいでしょうか。
プラグインを使って子テーマを作ってみました。
そして子テーマのfunctions.phpにコードを追加したところ、
サイトが表示されなくなってしまいました。
そこで記述を元に戻すために、
FFFTPから、子テーマのfunctions.phpを編集しようとしたのですけども、
記述が元に戻ってしまい編集できませんでした。
子テーマのfunctions.phpを削除したところ、
子テーマでは表示が崩れてサイトが表示されます。
functions.phpを編集するにはどうしたら良いのでしょうか。
もしくは、いっそ、
私は「One-Click Child Theme」というプラグインで子テーマを作ってみたのですが、このプラグインを削除しても問題無いでしょうか?
(本テーマに戻して、プラグインを入れなおす。)
なんでも結構ですので、アドバイスをいただけないでしょうか。
はらぺこまま様
返信ありがとうございます。子テーマに中身のないfunctions.phpを追加してもブログの表示ができるということはそのコード自体に問題があるかもしれません。一度次の項目を確認してみてください。
1.記述に間違いがないか?
functions.phpに追加するコードに間違いがないか確認して下さい。特に「 ‘ 」や「 ” 」などが、全角になっていないか確認し、全角であれば半角にして試して下さい。
2.親テーマに追加してみる
先にバックアップはしておいた方が安心です。子テーマのfunctions.phpから該当のコードを一度削除してブログを確認。それで表示されているなら親テーマのfunctions.phpに該当のコードを追加してみて試して見てください。それで反映されるかどうかを確認します。
また、ブログが真っ白になったら、FTPで「親テーマ」のfunctions.phpを開いて追加したコードを削除して下さい。
しげぞう様
早速のお返事ありがとうございました!
教えて頂いた通り、先にテキストの内容を記載してからファイルを作る方法で
functions.phpファイルをアップしても不具合が起きなくなりましたが、
肝心の目的である関連記事を増やすコードを追加すると、またブログが真っ白になります。
手順としては
FTPで先に教えて頂いたコードのみを記載してからfunctions.phpファイルを保存
↓
ブログが正しく表示されたことを確認し
↓
以下のコードをワードプレスのテーマの編集のfunctions.phpから//以降に記載
function jetpackme_more_related_posts( $options ) {
$options[‘size’] = 6;
return $options;
}
add_filter( ‘jetpack_relatedposts_filter_options’, ‘jetpackme_more_related_posts’ );
保存して更新するとまた真っ白になるのです…
たびたび申し訳ありませんが、ご教示いただけますでしょうか?
はらぺこまま様
URLはそのままでOKという事だったので、そのまま公開させてもらいますね。ありがとうございます。
1.functions.phpについて
ブログが真っ白になるのはおそらくfunctions.phpが原因だろうと思いますが、空白でアップしてダメなら中身の部分を先に追加して保存して試して見てください。
このphpコードで囲む部分だけを先に追加しておいても良いかと思います。それから「functions.php」のファイル名はそのまま「functions.php」といて、子テーマに追加して見て下さいませ。
それでもブログが真っ白になる場合には一度子テーマに追加した「functions.php」を空白にして保存してブログが表示されるか確認して下さい。また、キャシュが残っている場合もあるので、ブログを表示させて「ctrl」と「F5」を一緒に押してリロードしてからの確認をしてみてください。
2.ブログ内でのリンクの件
ブログを紹介してもらえるのは非常に嬉しいですし、非常に励みになります。今後もどうぞよろしくお願い致します。
こんにちは!
以前アドセンスの件で、別のしげぞう様のブログの方でお世話になりありがとうございました。
質問させてください。
①しげそう様と同じように(出来る範囲でですが)twenty twelveをカスタマイズしました。
私はjetpackのプラグインを使っていて、関連記事が3つ表示なので6にかえたいと思っています。変更の仕方はネットで調べたら分かったのですが、functions.phpをいじる必要があります。
早速child内に中身が空のファイルのfunctions.phpを作ったのですが、このファイルを作った時点で自分のワードプレスのページが真っ白になりました。
FTPでchild内にファイルを追加(中身は空のまま)→functions.phpにファイル名を変更しただけなのですが、何か手順が間違っていますか?
②このサイトとアフィリエイトのサイトを参考にブログを運営しています。
特に初心者なのでワードプレスのカスタム記事が大変参考になったので、私のブログ内でリンクさせて頂いてよろしいでしょうか?
私のブログは
http://harapekokazoku.com/
です。
リンクは消さなくても特に問題ないので、しげぞう様のご判断にお任せします。
レイちゃん様
わざわざありがとうございます!上手くできたようで良かったです。また分からない部分などありましたらコメント頂けると嬉しいです。今後もどうぞよろしくお願い致します。
はじめまして。子テーマを作るのに手間取ってましたが、とてもわかりやすい説明であっという間にできました!ありがとうございました!