前回の記事ではfunciton.phpにカスタマイズ内容を書き込むお話をしましたが、今回はfunction.php自体のお話。
その前回でもちょっとだけ触れましたが、最初はやっぱり直接function.phpを触るのはエラーが怖かったり、いろいろと書き込んでいくと長々となってしまってメンテナンス性が落ちてしまったり。僕なんかはよく「あれ、あの関数どこに書いたっけな……」。ってことがありました。
そうなると書いた箇所を探すだけで無駄な時間が過ぎてしまったり、テンション下がって発想が上手くいかなかったり……。
そうなる前にfunction.phpを分けてわかりやすくしちゃいましょう。
別ファイルにして読み込む
既存のfunction.phpに直接書かずに別ファイルで作っておいて、それをfunciton.phpで呼び出す。(include)します。
phpのincludeを使う方法もあるかと思いますが、ここもやはりwordpress独自の関数を使ちゃいましょう。
使用する関数は
get_template_part()です。
get_template_part()
get template part()は最近のwordpressテーマファイルを見てみるとでてきてますよね。たとえば下記のような感じ。
get_template_part( ‘template-parts/post/content’, get_post_format() );
もしくは
get_template_part( ‘template-parts/page/content’, ‘page’ );
get_post_format()も調べると面白いですが、今回は割愛させていただいて、下の方を見てみると、この場合は”template-partsフォルダ“の中の”pageフォルダ“の中の”content-page.php“をインクルードしてね。ということになっています。
これだけ見るとなんだかちょっとややこしいので、いつものwordpressの関数リファレンスを覗いてみましょう。
get_template_partの基本
関数リファレンスによると、get_template_partは
1 |
<?php get_template_part( $slug ); ?> |
もしくは
1 |
<?php get_template_part( $slug, $name ); ?> |
となっています。
$slugは一般テンプレートのスラッグ名。
$nameは特定テンプレートの名前。
例えば、今回のようにfunction.phpに書く内容を分けて書いていこうとした場合のファイル名を考えた場合、好きな名前を付けるのも当然OKです。仮にこのファイルをcustom.phpと名付けた場合は(一般テンプレートのスラッグ名とは言えませんが)
1 |
<?php get_template_part( 'custom' ); ?> |
とすることでインクルードされます。
ただ、時間が経ってから修正や変更する必要が生じた時などは(僕だけかもしれませんが)「あれ、なんて名前だったっけ?」となっちゃったりするんですよね。こうしたファイル名にしてしまうと……。
そこで、$slugには一般のテンプレートのスラッグ名ということで、今回の場合なら、ファイル名の最初は”function”(function.php関連のファイル)
$nameに特定のテンプレートの名前なので、ここにcustomとつけることにします。そうするとファイル名は[$slug]-[$name].phpなので、
function-custom.phpという名前になります。
このようにして名付けたファイルをfunction.phpで呼び出すので、get_template_part関数は
1 |
<?php get_template_part( 'function', 'custom' ); ?> |
ということになります。
まぁ分かればどんな名前でもいいとはおもいますが……。
ちなみにもっとちゃんとフォルダに入れて管理しようって事になった場合だと、例えばフォルダ名「lib」にインクルードするfunction-custom.phpを入れるとするならば、
1 |
<?php get_template_part( 'lib/function', 'custom' ); ?> |
となります。
function.phpにget_template_partを記載
あとは先ほどの例なら、get_template_part( ‘function’, ‘custom’ );をfunction.phpに記載すれば完了ですが、function.phpに内容が書かれている場合は最初に必ず<?phpが書かれているかと思いますので、
1 |
get_template_part( 'function', 'custom' ); |
でOKです。
まとめ
function.phpを分割しておくと、複数で作業する場合や、ショートコードを沢山利用する場合などに特に便利な気がします。分割しておくことで複数で作業する場合は余計なトラブルがかなり減るかと思います。修正やエラーの発見もしやすいので、正直ストレスは減りますよ〜。
1件のコメント