Я разрабатываю плагин для Wordpress Woocommerce. В моем локальном окружении все работает нормально, но у меня возникают проблемы при добавлении плагина в реплику среды prod. Я новичок в WordPress и не очень знаком с веб-разработчиком (я программист на Java).
В файле плагина я создаю экземпляр класса из пакета плагинов Woocommerce:
$coupon = new WC_Coupon($some_code);
В локальной среде (php 5.4.10, Woocommerce 2.0.13, Wordpress 3.6) все в порядке. В производственной среде (php 5.4.10, Woocommerce 1.6.5.2, Wordpress 3.4.2) у меня возникает следующая ошибка:
Fatal error: Class 'WC_Coupon' not found
Я попытался включить файл, в котором определен класс WC_Coupon, но затем ошибка становится
Fatal error: Cannot redeclare class WC_Coupon
Итак, как правильно использовать классы, объявленные в другом плагине?
Примечание: обновление не вариант в данный момент.
plugins_loaded
правильный крюк. Нужно будет искать, когда именно этот класс будет доступен, и подключиться после этого. В любом случае +1register_deactivation_hook( __FILE__, 'deactivate');
. Так что я не могу ждать. Могу ли я попросить WordPress загрузить класс, если он еще не загружен?WC_Coupon
Загружаются__construct
из основногоWooCommerce
класса ( на самом деле поincludes()
методе непосредственно наречено__construct
) иWooCommerce
классом instanziate (как одноточечные) , как только загружается плагин. Так чтоplugins_loaded
это правильный крючок в этом случае;)class_exists( 'WC_Coupon' )
. Также, пожалуйста, укажите, что вы используете это во время деактивации ... могли бы сэкономить наЭто слишком поздно, но я хотел бы поделиться тем, как использовать woocommerce и его классы, не найдя класс ошибок.
Сначала нужно проверить, установлен ли woocommerce, и использовать
woocommerce_loaded
ловушку действий.Я надеюсь, что это помогает кому-то.
источник
Правильный путь будет:
Перед использованием лучше проверить, существует ли класс, чтобы избежать фатальной ошибки, если плагин отключен.
Вы не можете переопределить класс, который не разрешен в PHP.
Вы также можете расширить класс:
Но большую часть времени, и в этом случае с WooCommerce, вам лучше найти зацепку в документации , которая справится с этой задачей.
источник