web-dev-qa-db-ja.com

プラグインがアクティブかどうかを確認できません

ACFを使用してカスタムテーマに取り組んでいます。プラグインがアクティブかどうか確認したいのですが。私はこのコードを使っています:

<?php include_once( ABSPATH . 'wp-content/plugins/advanced-custom-fields-pro/acf.php' ); 
if ( is_plugin_active( 'advanced-custom-fields-pro/acf.php' ) ) {

echo "hi";

} ?>

ただし、次のようなエラーが表示されます。

致命的なエラー:21行目の/Users/johann/htdocs/clarity_v21/wp-content/themes/clarity/templates/header.phpにある未定義の関数is_plugin_active()を呼び出してください

何が間違っている可能性がありますか?


だから私が試した提供された答えに基づいて:

if( class_exists('acf') ) { 

  if (($header_style)=='style2') {

}

そしてそれはうまくいった!だから基本的な解決策はあなたがチェックしようとしているプラ​​グインに関連するクラスを見つけることを試みることです。この場合、クラス "acf"はAdvanced Custom Fieldsプラグインに固有のものであり、プラグインがアクティブな場合にのみ条件付きの実行を許可していました。

7
Johann

class_exists :を確認してください。

<?php 
     if( class_exists('acf') ) {
        echo "hi";
     }
?>
15
Behzad

is_plugin_active()は管理領域内でのみ利用可能です。この関数を使用するには、フロントエンドにコアのplugin.phpファイルを含める必要があります。

WordPressから ドキュメント

注:wp-admin/includes/plugin.phpで定義されているので、これは管理ページ内からのみ利用可能で、この関数への参照はadmin_initまたはそれ以降のアクションにフックする必要があります。テンプレートの中からこの関数を使いたい場合は、plugin.phpを手動で要求する必要があります。例を以下に示します。

だからそれはのようになります

<?php include_once( ABSPATH . 'wp-admin/includes/plugin.php' ); 
if ( is_plugin_active( 'advanced-custom-fields-pro/acf.php' ) ) {
    echo "hi";
} ?>
5
Sumit