最近、より技術的な読者から、WordPressサイトに新しいコードを統合する前にPHP関数の存在を確認する方法について質問がありました。これは、サイトがスムーズに実行され、エラーを回避するために重要です。
WordPressの強みの一つはその柔軟性であり、WPBeginnerチームはサイトの機能を向上させるためにカスタム関数を定期的に追加しています。カスタムPHPコードは、存在しない関数を呼び出したり、まだ定義されていない関数を呼び出したりすると失敗する可能性があることを理解しています。
この記事では、WordPress テーマに追加する前に、関数が存在するかどうかを簡単に確認する方法を紹介します。これにより、コードのエラーを防ぐことができます。

カスタムコードに「関数が存在するかどうか」を追加する理由
WordPressは主にPHPプログラミング言語で記述されています。PHPは、WordPressホスティングプロバイダーのサーバーで実行されるサーバーサイドプログラミング言語です。
PHPコードは訪問者のブラウザでページが読み込まれる前に実行を完了する必要があるため、いくつかの制限があります。その制限の1つは、何か問題が発生した場合、ページ全体が読み込まれなくなる可能性があることです。
WordPressでは、欠落した関数がコードの残りの部分の実行を妨げる場合、処理は停止し、致命的なエラーまたは致命的なエラーメッセージが表示されます。

関数が突然機能しなくなったり、消えたりする原因は何ですか?
これは、あなたが思っているよりも一般的なWordPressのエラーです。
たとえば、WordPressプラグインの1つに関数があり、それをテーマのヘッダーまたはフッター領域に追加したとします。プラグインを無効にすると、関数が消え、WordPressウェブサイトで致命的なエラーが発生します。
とはいえ、WordPressテーマファイルで関数を実行する前に、その関数が存在するかどうかを簡単に確認する方法を見てみましょう。
WordPress で関数が存在するかどうかを確認する
幸いなことに、PHPプログラミング言語には、実行前に関数の存在を簡単に確認するための組み込みメソッドがあります。
現在時刻をタイムゾーン情報とともに表示するWordPress関数があるとしましょう。試すことができるサンプルコードスニペットを次に示します。
テーマのfunctions.phpファイルに直接追加することもできますが、このチュートリアルでは、WPCodeコードスニペットプラグインを使用します。これは、WordPressにカスタムコードを追加するための最も安全で簡単な方法だからです。
まず、WPCode無料プラグインをインストールしてアクティブ化する必要があります。これを行う方法がわからない場合は、WordPressプラグインのインストール方法に関するステップバイステップの初心者向けガイドを参照してください。
有効化したら、WordPressダッシュボードのコードスニペット » + スニペットを追加に移動する必要があります。そこに移動したら、「カスタムコードを追加(新規スニペット)」オプションにマウスカーソルを合わせ、表示される「スニペットを使用」ボタンをクリックします。

これにより、カスタムスニペットを追加できる新しいページが開きます。「タイムゾーン付き現在時刻の表示」のようなタイトルを入力し、以下のコードスニペットをコードプレビューペインに貼り付けます。
//display current time with timezone
function wpb_show_timezone() {
$better_time = current_time('F j, Y g:i a e');
echo "<p>The current time is " . $better_time ."</p>";
}

その後、コードが正しく実行されるように、コードタイプのドロップダウンから「PHP スニペット」を選択する必要があります。
最後に、アクティベートトグルをオンの位置に切り替え、「スニペットを保存」ボタンをクリックして新しいコードスニペットを保存します。

この関数を呼び出すには、現在の時間を表示したいWordPressテーマ内のどこかに次のコードを追加する必要があります。
<?php wpb_show_timezone(); ?>
これは、テスト用のウェブサイトではこのように表示されました。

では、この関数を実行するコードが消えてしまったらどうなるでしょうか?
関数への呼び出しは、ウェブサイトをこのように壊します。

このコードが関数が存在する場合にのみ実行されるように、チェックを追加しましょう。
再度、コードをテーマのfunctions.phpファイルに直接追加するか、WPCodeのようなコードスニペットプラグイン(推奨)を使用する必要があります。
<?php
if( function_exists('wpb_show_timezone')) {
wpb_show_timezone();
} else {
// do nothing
}
?>
このコードでは、function_exists()関数を使用しています。この関数は、関数が存在するかどうかをチェックし、TrueまたはFalseを返します。
次に、関数の有無に応じて適切なアクションを実行するために、if-else条件を追加しました。
関数が利用できなくなった場合、コードはそれを単純にスキップし、WordPress はウェブサイトの残りの部分を通常どおり読み込むことができます。

この記事がWordPressで関数が存在するかどうかを確認する方法を学ぶのに役立ったことを願っています。また、WordPressサイトにコードを簡単に表示する方法に関するガイドや、WordPressファイルを編集するためのMacおよびWindows向けの最高のコードエディターの専門家による選択肢も参照してください。
この記事が気に入った場合は、WordPressのビデオチュートリアルのために、YouTubeチャンネルを購読してください。また、TwitterやFacebookでも私たちを見つけることができます。


kzain
頭痛の種がなくなりました!関数が存在しないためにテーマがクラッシュするという理由でコードを追加したことが何度あったか分かりません。実装が非常に簡単で、コードをきれいに保てます。
明確なご説明ありがとうございます
イジー・ヴァネック
PHPで存在しないPHP関数に関するエラーが発生した場合、そのような関数を有効にすることはできますか、それともサーバー管理者が行う必要がありますか?また、関数がPHPのバージョンに依存する可能性はありますか?つまり、あるPHPバージョンでは利用できるが、別のバージョンでは利用できない関数があるということですか?
WPBeginnerサポート
その場合、関数が存在しないため、エラーの原因となっている特定の関数を調べて見つける必要があります。その後、エラーの原因についてサポートに確認するか、エラーの原因となっているものを削除することができます。
管理者
ラキブ
本当に役立ちました
ジョアナ・ペレイラ
良い考えですね、コフシェニンさん。おっしゃっている意味がよくわかります。私もContact Form 7でカスタム関数(各フォームでIPアドレスを取得するため)を使用しており、プラグインが更新されるたびにテーマが壊れていました。
ヒントをありがとう
ジョアナ・ペレイラ
kzain
プラグインのアップデートでテーマが壊れたこともありました! function_exists() を使用することは、これらの頭痛の種を防ぐためのゲームチェンジャーであることは間違いありません。
コフシェニン
右、WordPressのテーマでfunction_existsを使用してdynamic_sidebarをチェックするのはやめてください。WordPress 2.2以前をサポートする必要がない限り、それは*絶対に*ないと思います。また、ユーザーフォトプラグインについても、全体的なアプローチが間違っていて冗長に思えます。多くの開発者がpluggable functionsの全体像を見失っているようです…。まあいいか