WordPress 3.6 を使用。
ショートコードを足したりフィルターフックを書いたりしておくとどんどん大きくなる functions.php。
あまりにも肥大化してしまう場合は「カスタマイズ用 functions.php」「ショートコード用 functions.php」などファイルを分割して管理したい。
まずファイルを用途別に分割してから get_template_part
や locate_template
で分割したファイルを読み込むようにする。
以下は使用している functions.php をフィルターフック用の「filter_hooks.php」とショートコード用の「shortcodes.php」に分割し、テーマのディレクトリに「custom-functions」ディレクトリを作成、そこに分割後のファイルを配置する場合の例。
3.0 以降
functions.php(Themify のテーマ使用時は custom-functions.php)に以下のように記述する。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$custom_functions_dir = 'custom-functions/'; $custom_functions_files = array( // フィルターフック用 $custom_functions_dir . 'filter_hooks', // ショートコード用 $custom_functions_dir . 'shortcodes' ); foreach ($custom_functions_files as $custom_functions_file) { get_template_part($custom_functions_file); } |
詳しくは WordPress Codex を参照。
ファイル指定の際「.php」の拡張子が不要なのが特徴。
2.7 以降
3.0 未満 2.7 以上の場合はこちら。(一応 3.0 以上でも使える)
functions.php(Themify のテーマ使用時は custom-functions.php)に以下のように記述する。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$custom_functions_dir = 'custom-functions/'; $custom_functions_files = array( // フィルターフック用 $custom_functions_dir . 'filter_hooks.php', // ショートコード用 $custom_functions_dir . 'shortcodes.php' ); foreach ($custom_functions_files as $custom_functions_file) { locate_template(array($custom_functions_file), true); } |
詳しくは WordPress Codex を参照。
この方法だと指定したファイルが無くてもエラーにならないし安心。
ちなみに locate_template
の第一引数は array となっているから複数のファイルを一括で指定できそうなんだけど、実際は存在した最初のファイルだけが処理されるから、複数のファイルを読み込ませる場合は結局外側でループしなくちゃならない。