J'utilise WordPress 3.0.5 et j'ai testé avec 3.1rc4. Dans le fichier PHP principal de mon plugin, lorsque j'essaie d'appeler is_plugin_active, je reçois Call to undefined function is_plugin_active()
. Je peux appeler add_action et add_filter. Que dois-je vérifier / modifier pour résoudre ce problème?
Cela se produit à l'intérieur de l'administrateur sur la page Plugins. En haut de mon fichier de plugin principal que j'ai, if (function_exists('is_plugin_active')) {
qui retourne toujours faux.
Je ne peux pas non plus voir les fonctions de mon fichier de plugin principal dans d'autres plugins (si cela aide).
function_exists('is_plugin_active')
c'est faux lorsqu'il est appelé à partir du fichier du plugin principal si en dehors d'une méthode, mais c'est vrai lorsqu'il est appelé à l'intérieur de la méthode qui est appelée pour l'activated_plugin
action.Réponses:
En effet, le fichier dans lequel is_plugin_active () est défini -
wp-admin/includes/plugin.php
- n'est chargé que dans l'administrateur, une fois votre plugin chargé.Ainsi, vous ne pouvez l'appeler qu'après le déclenchement de 'admin_init':
la source
Vous pouvez appeler is_plugin_active () dans les modèles et à partir des pages utilisateur, ce qui peut être utile pour les plugins associés (c'est-à-dire exiger le plugin 'xyz' pour faire fonctionner mon nouveau plugin). Vous devez inclure manuellement le fichier plugin.php comme indiqué dans les documents is_plugin_active () sur Codex.
Voici un exemple fonctionnel que j'utilise dans mes packs de modules complémentaires premium pour m'assurer que le plugin de base gratuit est actif avant d'appeler un objet module complémentaire. Cela nécessite que certains crochets et filtres soient disponibles dans le plugin de base, sinon il se plantera.
Soit dit en passant, si vous rencontrez des problèmes avec is_plugin_active () à partir d'une connexion administrateur active, c'est probablement parce que vous testez avant que admin_init ne se déclenche. admin_menu se déclenche avant admin_init et faire des tests dans admin_menu m'a "mordu" auparavant. Le nom "admin_init" qui me semble contre-intuitif puisque admin_menu est déjà lancé. Je pense à init comme "la première chose à faire" ... peut-être que admin_kinda_init () serait mieux. :)
la source
include_once(ABSPATH.'wp-admin/includes/plugin.php');
fait l'affaire pour moi. Merci!Une solution rapide et sale serait de dupliquer la fonction manuellement:
Il est assez court, il ne devrait donc pas être trop difficile à implémenter dans votre propre code comme solution de contournement.
la source
Simple et facile. Extrait de WP
puis toutes les instances de
obtenez le contrôle de fonction. Donc plus d'erreurs.
la source
requireonce
vous n'avez probablement pas besoin de vérifier la fonction ...?J'ai préféré la réponse de Tom Auger sur la façon de définir votre propre fonction is_plugin_active au lieu d'inclure plugin.php. Cependant, l'utilisation du même nom de fonction a provoqué un plantage de ma zone d'administration. L'utilisation d'un nom de fonction différent l'a résolu:
la source
Utilisez-vous à l'
is_plugin_active
intérieur de l'administrateur ou du front-end? Je suis sûr que ceis_plugin_active
n'est qu'une fonction d'administration qui se trouve dans wp-admin / includes / plugin.php.De plus, votre fichier de plugin principal utilise- t-il l'en- tête de fichier Wordpress ? Votre plugin est-il inclus après le chargement du fichier plugin.php ci-dessus?
la source
Pour déboguer les plugins actifs:
Pour rechercher un plugin spécifique:
L'action s'appelle "
active_plugins
" IIRC.la source
Aucune de ces solutions n'a fonctionné pour moi, mais cela a:
J'ai trouvé cette solution sur codebangers.com
la source