web-dev-qa-db-fra.com

Impossible de vérifier si le plugin est actif

Je travaille sur un thème personnalisé en utilisant ACF. Je voudrais vérifier si le plugin est actif ou non. J'utilise ce code:

<?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";

} ?>

Cependant, j'obtiens l'erreur suivante:

Erreur fatale: appel de la fonction non définie is_plugin_active () dans /Users/johann/htdocs/clarity_v21/wp-content/themes/clarity/templates/header.php à la ligne 21

Des idées ce qui pourrait être le problème?


Donc, sur la base de la réponse fournie, j'ai essayé:

if( class_exists('acf') ) { 

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

}

et cela a fonctionné! La solution consiste donc essentiellement à essayer de trouver une classe liée au plug-in que vous essayez de vérifier. Dans ce cas, la classe "acf" est spécifique au plug-in Advanced Custom Fields et ne m'a permis d'exécuter la conditionnelle que si le plug-in était actif.

7
Johann

Essayez de vérifier class_exists :

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

is_plugin_active() uniquement disponible dans la zone d'administration. Vous devez inclure le fichier plugin.php de base au début pour utiliser cette fonction.

De WordPress documentation

REMARQUE: défini dans wp-admin/includes/plugin.php, il est donc uniquement disponible dans les pages d'administration et toute référence à cette fonction doit être connectée à admin_init ou à une action ultérieure. Si vous souhaitez utiliser cette fonction à partir d'un modèle, vous devez demander manuellement plugin.php. Vous trouverez un exemple ci-dessous.

Donc ce sera comme

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