Estoy desarrollando un complemento de Wordpress Woocommerce. En mi entorno local funciona bien, pero tengo problemas al agregar el complemento a una réplica del entorno de producción. Soy nuevo en WordPress y no estoy muy familiarizado con el desarrollador web (soy un programador de Java).
En el archivo de complemento, ejemplifico una clase del paquete de complemento de Woocommerce como esta:
$coupon = new WC_Coupon($some_code);
En el entorno local (php 5.4.10, Woocommerce 2.0.13, Wordpress 3.6) está bien. En el entorno de producción (php 5.4.10, Woocommerce 1.6.5.2, Wordpress 3.4.2) tengo el siguiente error:
Fatal error: Class 'WC_Coupon' not found
He intentado incluir el archivo donde se define la clase WC_Coupon pero luego el error se convierte
Fatal error: Cannot redeclare class WC_Coupon
Entonces, ¿cuál es la forma correcta de usar las clases declaradas en otro complemento?
Nota: la actualización no es una opción en este momento.
plugins_loaded
es el gancho adecuado. Uno tendrá que buscar cuando exactamente esa clase esté disponible y conectarse después de eso. De todos modos +1register_deactivation_hook( __FILE__, 'deactivate');
. Entonces no puedo esperar. ¿Puedo pedirle a WordPress que cargue la clase si aún no está cargada?WC_Coupon
es cargado por__construct
laWooCommerce
clase principal (realmente porincludes()
método directamente llamado por__construct
) y laWooCommerce
clase se instanziate (como singleton) tan pronto como se carga el complemento. Asíplugins_loaded
es el gancho adecuado en este caso;)class_exists( 'WC_Coupon' )
. También indique que está usando esto durante la desactivación ... podría haber ahorrado toneladas de tiempo respondiendo a la multitud ...Esto es demasiado tarde, pero me gustaría compartir cómo usar woocommerce y sus clases sin tener una clase de error no encontrada.
Primero es verificar si WooCommerce está instalado y usar el
woocommerce_loaded
gancho de acción.Espero que esto ayude a alguien.
fuente
La forma correcta sería:
Es mejor verificar si la clase existe antes de usarla, evita errores fatales si el complemento está deshabilitado.
No puede volver a declarar una clase que no está permitida en PHP.
También puedes extender la clase:
Pero la mayoría de las veces y en este caso con WooCommerce, es mejor que encuentre un gancho en la documentación que se encargará del trabajo.
fuente