WordPressの「functions.php」を
それぞれ別のファイルに分割して管理する方法
WordPressでサイトを制作していく際、必須ファイルの1つでもあり、色々とカスタマイズ的な事や設定などを記載していくことになるファイルとしてfunctions.php
というファイルがあります。
非常に大切で重要なファイルでもありますが、色々な設定などを記載していくとどうしてもファイルが長くなってしまいがちです。長くなることが悪いというわけではないのですが、長くなってしまうと管理面的に少し手間や面倒さなども増えてしまいます。
そんな時に便利なのが、functions.php
に記載するコードを分割してそれぞれをファイル化して管理する方法です。これを行えば、必要な設定のファイルのみを開いて編集することで視認性も上がりミスや万一のエラーなども減らしやすくなります。
functions.phpを分割管理する方法
では実際に分割管理していくにあたっての方法を見ていきましょう。
分割管理するためのフォルダ作成
そもそもfunctions.php
をどう管理していくかは人によって様々かとは思いますが、多くの場合はfunctions
というフォルダ(実際の名前は自由ですが、わかりやすくfunctionsとするのが良いかと思います)を作り、その中に設定ファイルを保存していくというのが一般的かと思います。
テーマファイルを管理しているフォルダの中にfunctions
というフォルダを作っておきましょう。今回は下記のような構造ということを例にして解説を進めていきたいと思います。実際に使う方はそれぞれご自身の管理の構造に合わせてください。
|- ○○_theme
|- functions
| |- init.php
| |- thumbnail.php
| |- pagenation.php
| |- shortcord.php
| |- security.php
| │- ...
|
|- category.php
|- functions.php
|- index.php
|- single.php
|- ...
functions.phpのコードを分割してファイル化する
1つにまとまっているfunctions.php
のコードをそれぞれ分割していきましょう。多くの場合は役割毎などに分割していくのが良いかと思います。
- thumbnail.php(サムネイルの設定)
- pagenation.php(ページネーションの設定)
- shortcord.php(ショートコードの設定)
- security.php(セキュリティ関連の設定)
- init.php(その他の初期設定)
などなど、自分がfunctions.php
で管理している中身をわかりやすいようにジャンル毎や役割毎などで分割していき、先ほど作ったfunctions
フォルダに保存していきます。
分割した各ファイルをfunctions.phpで読み込む
最後に分割したファイルをfunctions.php
で読み込んで呼び出す設定を記載します。基本的に分割する際は、functions.php
ファイルは呼び出す役割のみなどにした方がわかりやすくなります。
<?php
locate_template( 'functions/thumbnail.php', true );
locate_template( 'functions/pagenation.php', true );
locate_template( 'functions/shortcode.php', true );
locate_template( 'functions/security.php', true );
locate_template( 'functions/init.php', true );
ファイルの呼び出しには、locate_template
を使っています。
呼び出し方は様々あり、解説記事などによっては、require_once
やget_template_part
などを使って呼び出す方法もありますが、個人的にはlocate_template
を使っています。
基本となる構文は下記の通りです。
<?php locate_template( $template_names, $load, $require_once ) ?>
$template_names
にパスを含めたファイル名を入力します。
注意点としては.php
の拡張子の記載まで必要になるため必ず忘れずに書きましょう。
その次の$load
はtrue
なら見つかったテンプレートファイルを読み込みます。
最後の$require_once
はデフォルトでtrue
となるため省略できるので書かずに使っていますが、このデフォルトのtrue
だった場合はrequire_once
関数にて書かれたテンプレートファイルを読み込むという形になります。
と言うことで、記載の際にファイルのパスの記載だけ気をつけておけば、これで分割して作ったファイルを呼び出すだけで完了となります。分割したfunctions.php
は非常に見やすくなりますし、管理もしやすくなっているはずです。
そもそもfunctions.phpは分割管理した方がよいのか
なぜ分割したりして管理するのがおすすめかというと、functions.php
は既に多くの人が知っている通り、「取扱い危険」なファイルとも言えますし、実際に編集する際にはバックアップを取ってから編集しているという方も多いはずです。
何気なく編集してアップロードしたりしていますが、この時に何かの記載ミスがあったりすると、WordPress全体に影響を及ぼしてしまうこともあったりします。たまにクライアントからも間違えてなんか触ってしまって、サイトが真っ白になってしまいました。なんて連絡を貰ったこともあります。
実際、編集してアップロードしたら画面真っ白になって焦ったという経験をした事がある人も多いのではないかと思います。
それくらい、functions.php
というのは慣れないと危険でもありますし、慣れていてもふとした何かの拍子でミスを起こしてしまうと甚大なエラーに繋がる危険性があるファイルでもあります。
functions.phpの設定を分割すれば必要な箇所以外編集しなくて済む
分割管理するメリットがこれです。functions.php
には様々な設定などを書き込んでいくため、非常に長いファイルになりがちです。
そうなるとどこに何の設定が書いてあるのかなど、久しぶりに編集した際には覚えておらず上から順に見ていきながら必要箇所を探さなければなりません。
もし、その時にふとした何かでキーボードに何かがあたったり、deleteやbackspaceなどを押したことに気付かなかったりすると、その何かの拍子で消えた1文字のせいでサイトに不具合が出てしまうなんて事も起こりえるのです。
また、functions.php
に書く設定などには、一度設定したらほとんど変更する事のない設定なども多々あります。そういったものは、万が一間違って触ったりしないためにも、別ファイルとして管理してそもそもファイルを開くことすらしない。という事にしておけば、エラーの起こる可能性を減らせます。
管理面でも編集したいファイルのみを開けば簡単に編集ができますし、エラーやミスや万が一が起こらないためにも、functions.php
ファイルの分割管理がオススメです。
まとめ
functions.php
を分割して管理するテーマで書いてきました。
実際にこれはやってみれば体感すると思いますが、分割管理すると管理やメンテナンスが非常に楽です。
なにより、別サイトを作る時のコピペなどがしやすくなりますし、何か修正をする際にもどのファイルを修正すれば良いかが一目瞭然なので、functions.php
を触るストレスがかなり軽減されるのではないでしょうか。
全部を1つにまとめているよりも、分割してファイル化している方がはるかに見やすく管理もしやすくメリットだらけでもあります。
たまにバックアップをせずに修正してアップロードして、WordPressがおかしくなってしまった…といった状況に陥っている方を見かけたりしますが、分割管理していればそういったミスも起こりにくくなりますし、ぜひこれを機に、functions.php
の分割管理を取り入れていきましょう。
記事のシェアにご協力お願いします