functions.phpとは何ですか?
WordPressは、テーマがすべてのページビューで読み込まれるとすぐに、`````functions.php`````ファイル(存在する場合)を自動的に読み込みます。これにより、WordPressの周りにユニークな機能を構築するための多くの力を提供します。
テーマ内でプラグインのような機能を構築できるからといって、常にそうすべきというわけではありません。特に、他の人が使用するためにテーマを配布する場合はそうです。サイトのデザインに関係なく利用可能であるべき機能を作成している場合、**コードをプラグインに入れるのがベストプラクティスです**。一般的なルールは、テーマはサイトのデザインのみを扱うべきです。
すべてのテーマはカスタム`````functions.php`````ファイルを持つことができますが、WordPressは現在アクティブなテーマのものだけを読み込みます。
このルールの唯一の例外は、子テーマがアクティブな場合です。その場合、WordPressは親テーマの`````functions.php`````を読み込む前に、子テーマの`````functions.php`````を読み込みます。子テーマについての詳細は、Advanced Topics章の[子テーマ](/read/wordpress/fdaa9ef52844b9ea.md)で学ぶことができます。
<a name="common-uses-for-functions-php"></a>
## functions.phpの一般的な使用法
`````functions.php`````ファイルは任意のPHPを書くことを可能にするため、テーマには非常に異なるコード、組織システム、命名規則などが見られることがよくあります。PHPの理解が深まるほど、他のテーマのコードを追跡するのが容易になります。
以下は、テーマの`````functions.php`````ファイルでよく見られるいくつかの使用法です。
<a name="adding-actions-or-filters-to-hooks"></a>
### フックにアクションやフィルターを追加する
フックはWordPressの機能を拡張するためのエントリーポイントであり、カスタムコードを注入したりデータをフィルタリングしたりする方法を提供します。テーマ(およびプラグイン)がWordPressと直接通信する方法と考えてください。
WordPressのフックシステムは、ページ読み込みプロセス中にコードを実行するための2つの異なる方法を提供します:
- [**アクションフック**](/read/wordpress/4922b255ebae10fb.md)は、カスタムアクションコールバックを実行し、受け取った情報に「作用する」ことを可能にします。
- [**フィルターフック**](/read/wordpress/54964e12222c48fc.md)は、カスタムフィルターコールバックを介してデータをフィルタリングし、それを操作することを可能にします。
技術的には、フックはプラグインAPIの一部であり、プラグインハンドブックで[ドキュメントを読むことができます](/read/wordpress/2dbc9c4ab635c481.md)。
プラグインAPIに存在するにもかかわらず、フックはテーマの文脈でも非常に便利です。プラグインと同様に、コードをフックで実行することで、ロードプロセスの適切なポイントで機能を実行できます。
このハンドブック全体で、`````functions.php`````から機能や機能を追加する例が表示され、これらの例は常にフックを使用します。ドキュメントに慣れることで、ハンドブック内のPHPコードを理解しやすくなります。
<a name="theme-setup-function"></a>
### テーマセットアップ関数
多くのテーマで一般的な使用例は、セットアップ関数を追加することです。これは一般的に、WordPressにテーマサポート機能を登録するために使用されます。これはほぼ常に、テーマの`````functions.php`````ファイルが読み込まれた後に利用可能な最初のフックである`````after_setup_theme`````アクションフックで実行されます。
これをテストするには、テーマの`````functions.php`````ファイルを開き(存在しない場合は作成し)、次のPHPコードを追加します:
``````bash
<?php
add_action( 'after_setup_theme', 'theme_slug_setup' );
function theme_slug_setup() {
add_theme_support( 'wp-block-styles' );
}
`
このコードは、WordPressのより意見的なブロックスタイルをテーマに追加します。これを使用する必要はありません。これはセットアップ関数がどのように見えるかの例に過ぎません。
セットアップ関数は、クラシックテーマでより一般的です。ブロックテーマを使用する場合、テーマは必要な機能に自動的にオプトインされることがよくあります。テーマサポート機能のリストは次のとおりです:
スクリプトとスタイルの読み込み
HTMLに精通している場合、<script>
タグを介してJavaScriptを追加したり、<link rel=”stylesheet”/>
または<style>
タグを介してスタイルシートを追加したりすることに出くわすことがあるでしょう。
WordPressは、スクリプトとスタイルを読み込むためのヘルパー関数と特定のアクションフックを提供します。これにより、ドキュメント出力の適切な場所に注入されることが保証されます。WordPressは、適切なHTMLマークアップを自動的に作成します。
スクリプトとスタイルの読み込みについては、アセットの含め方のドキュメントで詳しく学ぶことができます。
ブロックテーマを構築する際に、追加のスクリプトやスタイルを含める必要がないことは珍しくありません。一部のテーマは、フロントエンドデザインのためにグローバル設定とスタイルに完全に依存しています。
他のPHPファイルの含め方
WordPressは自動的にテーマのfunctions.php
を読み込みますが、そのファイルにカスタムPHPコードを追加することに制限されるわけではありません。テーマ内の他の場所からPHPインターフェース、クラス、トレイト、関数を読み込むことができます。
テーマ構造で学んだように、一部のテーマはカスタムPHPファイルを保存するために/inc
という名前のカスタムフォルダーを含めています(または任意のカスタムフォルダー)。カスタムヘルパー関数用の/inc/helpers.php
ファイルがあると仮定すると、functions.php
を介してget_parent_theme_file_path()
関数を使用してそれを読み込むことができます:
include get_parent_theme_file_path( 'inc/helpers.php' );
一般的に、この関数を使用して、読み込む必要のあるPHPファイルへの正しいディレクトリパスを取得するべきです。
また、子テーマがファイルをオーバーライドできるようにし、親テーマにフォールバックする場合は、get_theme_file_path()
を代わりに使用できます:
include get_theme_file_path( 'inc/helpers.php' );
子テーマがPHP関数やクラスを持つファイルをオーバーライドすることは標準的なプラクティスではありませんが、必要な場合もあります。
ファイルの最後に?>タグを閉じない
このセクションは「恐ろしいWordPressのホワイトスクリーンオブデスを避ける方法」と題されることもあります。
白い画面だけの壊れたサイトが表示される理由はいくつかあります。その理由の1つは、functions.php
ファイル(または任意のPHPファイル)の閉じた?>
タグの後に空白がある場合です。
<?php
// some code...
?>
多くのエディタ設定は、ファイルの最後に余分な行を自動的に追加します(一般的な開発プラクティス)。ファイルの最後に閉じた?>
タグを追加すると、この余分な空白を見逃すことがあり、特定の環境で「ホワイトスクリーンオブデス」を引き起こす可能性があります。
この問題を避ける最も簡単な方法は、閉じた?>
タグを完全に省略することであり、これは完全に有効なPHPであり、標準的なプラクティスです。上記のコードは次のように書くべきです:
<?php
// some code...