Trusted WordPress tutorials, when you need them most.
Beginner’s Guide to WordPress
WPBカップ
25 Million+
Websites using our plugins
16+
Years of WordPress experience
3000+
WordPress tutorials
by experts

ベストプラクティスWordPressテーマへの追加時に機能が存在するかチェックする

最近、あるユーザーから、WordPressサイトにPHP関数に依存する新しいコードを追加する前に、PHP関数が存在するかどうかを確認する方法を尋ねられました。

WordPressの最大の魅力は、サイトに独自のカスタム関数を追加できるなど、柔軟性が高いことです。しかし、カスタマイザーが参照する関数がすでに存在しないために、カスタマイザーコードが機能しないこともあります。

この投稿では、WordPressテーマに関数を追加する前に、関数が存在するかどうかを簡単にチェックする方法を紹介します。

Checking if a function exists in WordPress

なぜカスタムコードに「If Function Exists」を追加するのか?

WordPressは主にPHPプログラミング言語で書かれています。PHPはサーバーサイドのプログラミング言語で、WordPressホスティングサービスのサーバー上で動作します。

PHPコードは、訪問者のブラウザーにページが読み込まれる前に実行を終了しなければならないため、PHPには一定の制限があります。その制限の一つは、何か問題が発生した場合、ページ全体が読み込まれなくなる可能性があるということです。

WordPressでは、関数の欠落によって残りのコードが実行できなくなると、コードが停止し、クリティカルエラーまたは致命的なエラーメッセージが表示されます。

WordPress critical error message

何が突然機能を停止させたり、欠落させたりするのか?

WordPressのエラーは意外と多いものです。

例えば、WordPressプラグインの1つに、テーマのヘッダーやフッターエリアに追加した機能が付属しているとします。プラグインを無効化すると、その機能が消え、WordPressサイトで重大なエラーが発生します。

ということで、WordPressテーマファイルで関数を実行する前に、関数が存在するかどうかを簡単にチェックする方法を見てみましょう。

WordPressに関数が存在するかチェックする

幸運なことに、PHPプログラミング言語には、関数を実行する前にその関数の存在を簡単にチェックするビルトインメソッドが用意されています。

例えば、タイムゾーン情報を含む現在時刻を表示するWordPress関数があるとします。以下はそのサンプルコードです。

テーマのfunctions.phpファイルに直接追加することもできますが、このチュートリアルでは、WordPressでカスタマイザーコードを追加する最も安全で簡単な方法であるWPCodeコードスニペットプラグインを使用します。

まず、WPCode無料プラグインをインストールし、有効化する必要があります。WordPressプラグインのインストール方法については、ステップバイステップのビギナーズガイドをご覧ください。

有効化したら、WordPressダッシュボードのCode Snippets ” + Add Snippetにアクセスする必要があります。そこで、「カスタムコードを追加(新規スニペット)」オプションにマウスオーバーし、表示される「スニペットを使用」ボタンをクリックします。

Adding Custom Code in WPCode

カスタムスニペットを追加できる新しいページが開きます。Display Current Time With Timezone(タイムゾーンを含む現在時刻を表示する)」などのタイトルを入力し、以下のコード・スニペットをコード・プレビュー・ペインに貼り付けます。

//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>";
}
Paste the Code Snippet Into WPCode

その後、コードが正しく実行されることを確認するために、コードタイプのドロップダウンから「PHP Snippet」を選択する必要があります。

最後に、有効化トグルをオンに切り替え、「スニペットを保存」ボタンをクリックして新しいコード・スニペットを保存します。

Activate and Save the Code Snippet

この関数を呼び出すには、WordPressテーマの現在時刻を表示したい場所に以下のコードを追加する必要があります。

<?php wpb_show_timezone(); ?>

テストサイトではこのように表示された。

Function runs normally

さて、この関数を実行するレスポンシブが消えてしまったらどうなるだろうか?

関数を呼び出すと、あなたのサイトはこのように壊れてしまう。

Critical error in WordPress

関数が存在するときだけこのコードが実行されるようにチェックを加えてみよう。

この場合も、テーマのfunctions.phpファイルに直接コードを追加するか、WPCodeのようなコード・スニペット・プラグイン(推奨)を使用する必要があります:

<?php
if( function_exists('wpb_show_timezone')) {
wpb_show_timezone();
} else {
// do nothing
}
?>

このコードでは、function_exists()関数を使用している。この関数は関数が存在するかどうかをチェックし、True または False を返します。

そして、関数の使用可能性に応じて適切なアクションを取るために、if-else条件を追加した。

これで、その関数が使用できなくなった場合、コードは単にその関数をスキップし、WordPressはあなたのサイトの残りの部分を正常に読み込むことができるようになります。

Missing function skipped

WordPressに関数が存在するかどうかを確認する方法について、この投稿がお役に立てば幸いです。WordPressのトラブルシューティングやドラッグ&ドロップで使えるWordPressページビルダーのエキスパートセレクションもご覧ください。

If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.

情報開示 私たちのコンテンツは読者支援型です。これは、あなたが私たちのリンクの一部をクリックした場合、私たちはコミッションを得ることができることを意味します。 WPBeginnerの資金源 をご覧ください。3$編集プロセスをご覧ください。

アバター

Editorial Staff at WPBeginner is a team of WordPress experts led by Syed Balkhi with over 16 years of experience in WordPress, Web Hosting, eCommerce, SEO, and Marketing. Started in 2009, WPBeginner is now the largest free WordPress resource site in the industry and is often referred to as the Wikipedia for WordPress.

究極のWordPressツールキット

ツールキットへの無料アクセス - すべてのプロフェッショナルが持つべきWordPress関連製品とリソースのコレクション!

Reader Interactions

3件のコメント返信を残す

  1. Joana Pereira

    Good call Kovshenin. I know exactly what you mean because I was using a custom function with contact form 7 (to retrieve the ip address on each form) and every time the plugin was updated, the theme broke.

    Thanks for the tip

    Joana Pereira

  2. kovshenin

    Right, only please stop checking for dynamic_sidebar with function_exists in WordPress themes, unless you need to support WordPress 2.2 and below, which I *highly* doubt. Also with the user photo plugin, the whole approach seems to be wrong and redundant to me, it looks like many developers are missing the whole point of pluggable functions…. Oh well :)

返信を残す

コメントありがとうございます。すべてのコメントは私たちのコメントポリシーに従ってモデレートされ、あなたのメールアドレスが公開されることはありませんのでご留意ください。名前欄にキーワードを使用しないでください。個人的で有意義な会話をしましょう。