Wordpress apply_filters () Argumentos que faltan

2

Estoy personalizando un sitio de Wordpress de Woocommerce.

En la clase de producto Woocommerce ( class-wc-product.php ), la función get_price aplica un filtro de la siguiente manera:

function get_price() {
    return apply_filters('woocommerce_get_price', $this->price, $this);
}

En mis funciones.php quiero agregar un filtro de la siguiente manera:

add_filter('woocommerce_get_price', 'custom_price');

function custom_price($price, $product) {
    ...
}

Cuando llamo a esto, aparece la siguiente advertencia de PHP:

Warning: Missing argument 2 for custom_price()

¿Por qué falta el segundo argumento? ¿No se envió $this a la llamada de filtro?

    
pregunta benedict_w 12.11.2012 - 16:07

2 respuestas

13

Falta el segundo argumento porque no le dijiste a WordPress que lo querías con tu llamada add_filter . Por defecto, las acciones y los filtros solo obtienen un argumento. Prueba esto:

<?php
add_filter('woocommerce_get_price', 'custom_price', 10, 2);

function custom_price($price, $product) {
    ...
}
    
respondido por el chrisguitarguy 12.11.2012 - 16:39
1

La advertencia es el resultado del segundo argumento en su función custom_price (). El filtro proporciona solo una variable en la llamada y no puedo recordar si esta es la identificación del producto / publicación o el precio. Los documentos del código indican que devuelve una cadena, por lo que supongo que es el precio.

Esperamos que pueda encontrar la documentación en enlace

Si necesita el producto en este momento, deberá utilizar:

function custom_price( $price ) {

    global $product;

}

Si todo lo demás falla, simplemente repita $ precio para ver si puede decir si es una identificación del producto o un precio. Luego ajusta tu código en consecuencia.

    
respondido por el Steve 12.11.2012 - 16:35

Lea otras preguntas en las etiquetas