Elisabet Gonzalez
Estoy tratando de extender la clase WC_Product para agregar “propiedad1” y “propiedad2” a la matriz protegida $datos, pero cuando intento ejecutar mi complemento, aparece el siguiente error:
WC_Producto no encontrado.
Aquí está mi código:
class WC_MyClass extends WC_Product {
function __construct() {
parent::__construct();
array_push($data, "property1", "property2");
}
}
Lo que necesito es extender la clase WC_Product en mi complemento.
Detalles del complemento: Mi complemento consiste en calcular los costos de envío de acuerdo con la tarifa de la tabla de FedEx para mi país. Para hacer esto, estoy usando el complemento Woocommerce Table Rate Shipping. El problema es que FedEx a veces no toma en cuenta el peso real sino el volumétrico por lo que quiero hacer un plugin para determinar que peso es mayor y asignarlo a una variable. La idea es establecer un peso de envío para usarlo para calcular el costo de envío y no para modificar la especificación de peso del producto. Es por eso que estoy tratando de extender la clase WC_Product para agregarle la propiedad de peso de envío. Ya hice todos los cálculos, ahora solo necesito almacenar el peso del envío para usarlo con el complemento Woocommerce Table Rate Shipping.
Documentación: Clase WC_Producto – propiedad $data
david hilditch
Si tiene la función de extensión por sí sola, las clases de WooCommerce aún no se crearán. Tienes que agregar la extensión de clase a la init
gancho o woocommerce_init
como esto:
add_action( 'init', 'register_myclass' );
function register_myclass() {
class WC_MyClass extends WC_Product {
/*now you can override whatever you like*/
}
}
-
consulte esto en stackoverflow.com/questions/61551333/… Aunque no estoy seguro si es el mismo problema
– svelandiag
1 mayo 2020 a las 21:53
tienes que decirle a php que quieres hacer eso en una variable de clase
class WC_MyClass extends WC_Product {
function __construct() {
parent::__construct();
$this->data[] = "property1";
$this->data[] = "property2";
}
}
-
esto no soluciona mi problema, el problema es que no se encuentra la clase WC_Product. Creo que el problema está relacionado con los directorios, pero no quiero modificar los archivos de Woocommerce, quiero usar mi propio complemento para modificar algunas cosas de Woocommerce, así que no sé cómo acceder a la clase WC_Product.
– Elisabet González
12/09/2017 a las 17:33
-
¿Ha agregado y habilitado su complemento en wordpress?
– wodka
12/09/2017 a las 17:41
-
sí, en realidad no había tenido ningún problema con mi complemento antes porque no estaba extendiendo una clase. Había codificado solo la parte lógica de mi complemento, pero ahora quiero almacenar un valor directamente en una clase de Woocommerce, pero necesito agregar un nuevo elemento en una matriz protegida para hacer esto, así que quiero extender esa clase.
– Elisabet González
12 de septiembre de 2017 a las 18:08
-
@ElisabetGonzález, ¿por casualidad obtuviste una solución funcional para esto? Actualmente estoy enfrentando la misma situación. Necesito extender la clase WC_Product para agregar algunos elementos a la matriz de $data protegida y también para agregar algunas funciones nuevas, pero no puedo hacer que funcione. ¿Puedes ayudarme?
– robo
5 de mayo de 2020 a las 7:13
tal vez
include_once( WC_ABSPATH . 'includes/abstracts/abstract-wc-product.php' );
antes de la definición de clase? ¿Cómo usas tu WC_MyClass?– jeger
12/09/2017 a las 17:36
¿Estás conectando esto para que se ejecute después de WooCommerce?
add_action( 'init', 'my_wrapper_function' );
Por ejemplo, como en este artículo: jeroensormani.com/agregar-un-tipo-de-producto-woocommerce-personalizado– pantalones
12/09/2017 a las 17:37
@pants Creo que encontré el problema, tenía
add_action('woocommerce_after_shop_loop_item', 'myFunction', 10);
pero había escrito la parte de la clase demyFunction()
– Elisabet González
12/09/2017 a las 17:59
@jeger me da error
Warning: include_once(WC_ABSPATH/includes/abstracts/abstract-wc-product.php): failed to open stream
– Elisabet González
12/09/2017 a las 18:02
Es posible que deba leer antes esta documentación relacionada con WooCommerce: Crear un complemento para WooCommerce y Implementación de la clase de integración WC … Debería (puede ser) explicar lo que está tratando de hacer en WooCommerce (actualizando su pregunta), para obtener una ayuda más precisa.
– LoicTheAztec
12/09/2017 a las 18:27