WordPressの「functions.php」を
それぞれ別のファイルに分割して管理する方法

  • 2023.12.15

PHP・WordPress

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_onceget_template_partなどを使って呼び出す方法もありますが、個人的にはlocate_templateを使っています。

基本となる構文は下記の通りです。

<?php locate_template( $template_names, $load, $require_once ) ?>

$template_namesにパスを含めたファイル名を入力します。
注意点としては.phpの拡張子の記載まで必要になるため必ず忘れずに書きましょう。

その次の$loadtrueなら見つかったテンプレートファイルを読み込みます。

最後の$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の分割管理を取り入れていきましょう。

記事のシェアにご協力お願いします

  • 2023.12.15

PHP・WordPress

この記事と類似テーマの記事