WordPressでは便利で豊富なプラグインがあり、テーマ作成をするときに、依存することが多々あります。
その時に、テーマが依存するプラグインが有効化されてない(インストールもされてない)ときに、テーマを切り替えると、
「このサイトで重大なエラーが発生しました。
WordPress のトラブルシューティングについてはこちらをご覧ください。」
と表示され、WordPressのエラーが表示されることがあります。
これは、プラグインの機能を呼び出しているのに、プラグインが有効化されていないために発生する現象です。
( 他のエラーでも表示されるので分かりにくいんですけどね。 )
今回は、「Smart Custom Fields」で有効化を確認して、処理を分岐するようにします。
目次
functions.phpでプラグインの有効化を確認する
プラグインで利用されているクラスメソッドが存在しているかで判定します。
Smart Custom Filedsの場合は、SCFクラスメソッドを利用します。getするときはこちら。
SCF::get
このクラスメソッドが利用可能か、をfunctions.phpで判断します。
method_exists関数の第一引数に「オブジェクトのクラス名」、第二引数に「メソッドの名前」を入れることで、定義されていればtrueが返ってきます。
// プラグインの有効化を確認
if (method_exists('SCF', 'get')) {
// プラグインが有効化されていた時の処理
}
固定ページでプラグインの有効化を確認する
固定ページでもmethod_existsを利用してクラスメソッドが利用可能かを判断します。
ポイントは、method_existsで存在が確認できなければ、returnするところです。
これで後続処理に進まなくなります。
<?php
/**
* Template Name: test-template
*
*/
// プラグイン有効化を確認する
if (!method_exists('SCF', 'get')) {
echo 'Smart Custom Fields plugin is not active.';
return;
}
?>
Summary
プラグインに依存するテーマを作成した時には、ガードを入れて落ちることがないようにしましょう。