Je développe un plugin Wordpress Woocommerce. Sur mon environnement local, cela fonctionne bien mais j'ai des problèmes lors de l'ajout du plugin à une réplique de l'environnement de prod. Je suis nouveau sur wordpress et pas très familier avec le développement web (je suis programmeur Java).
Dans le fichier du plugin, j'instancie une classe du package du plugin Woocommerce comme ceci:
$coupon = new WC_Coupon($some_code);
Dans l'environnement local (php 5.4.10, Woocommerce 2.0.13, Wordpress 3.6) ça va. Dans l'environnement de production (php 5.4.10, Woocommerce 1.6.5.2, Wordpress 3.4.2) j'ai l'erreur suivante:
Fatal error: Class 'WC_Coupon' not found
J'ai essayé d'inclure le fichier où la classe WC_Coupon est définie, mais l'erreur devient
Fatal error: Cannot redeclare class WC_Coupon
Alors, quelle est la bonne façon d'utiliser les classes déclarées dans un autre plugin?
Remarque: la mise à niveau n'est pas une option pour le moment.
plugins_loaded
est le crochet approprié. Il faudra chercher quand exactement cette classe est disponible et se connecter après cela. Quoi qu'il en soit +1register_deactivation_hook( __FILE__, 'deactivate');
. Je ne peux donc pas attendre. Puis-je demander à wordpress de charger la classe si elle n'est pas encore chargée?WC_Coupon
est chargé par__construct
laWooCommerce
classe principale (vraiment par uneincludes()
méthode directement appelée par__construct
) et laWooCommerce
classe est instanziate (en tant que singleton) dès que le plugin est chargé. Il enplugins_loaded
va de même dans ce cas;)class_exists( 'WC_Coupon' )
. Veuillez également indiquer que vous l'utilisez pendant la désactivation ... aurait pu économiser des tonnes de temps à répondre à la foule ...C'est trop tard, mais je voudrais partager comment utiliser woocommerce et ses classes sans avoir une classe d'erreur introuvable.
La première consiste à vérifier si woocommerce est installé et à utiliser le
woocommerce_loaded
crochet d'action.J'espère que ça aidera quelqu'un.
la source
La bonne façon serait:
Il est préférable de vérifier si la classe existe avant de l'utiliser, cela évite une erreur fatale si le plugin est désactivé.
Vous ne pouvez pas redéclarer une classe non autorisée en PHP.
Vous pouvez également étendre la classe:
Mais la plupart du temps et dans ce cas avec WooCommerce, vous feriez mieux de trouver un crochet dans la documentation qui gérera le travail.
la source