Estoy actualizando uno de mis complementos y estoy un poco atascado con las funciones obsoletas.
Originalmente, mi complemento tenía una variable global y la clase principal del complemento se instanciaba y almacenaba en la variable global. De esta forma, los usuarios podrían usar las funciones globales para acceder a la clase de complemento.
$GLOBALS['my_custom_plugin'] = new my_custom_plugin();
Luego, por ejemplo, en mis preguntas frecuentes tuve un código que mostraba cómo eliminar una de las funciones de mi clase de un enlace específico y agregarlo a un enlace diferente:
function move_input(){
global $my_custom_plugin;
remove_action( 'before_main_content', array( $my_custom_plugin, 'display_input') );
add_action( 'after_main_content', array( $my_custom_plugin, 'display_input' ) );
}
add_action( 'wp_head' , 'move_input' );
Ahora, en mi actualización, la display_input()
función se ha movido a otra clase y quiero que las personas sepan cómo acceder a ella. Intenté reemplazar la función original (en la clase de complemento principal) con el siguiente aviso de desaprobación:
public function display_input() {
_deprecated_function( 'display_price', '2.0', 'my_custom_plugin()->display->display_input' );
return $this->display->display_input();
}
Sin embargo, las funciones add_action
y remove_action
no parecen activar el aviso de desaprobación. Extrañamente, eliminar completamente la función no causa un error, aunque array( $my_custom_plugin, 'display_input')
no exista.
Si alguien intenta acceder a la función directamente:
$my_custom_plugin->display_input();
Entonces veo los avisos de depuración. ¿Es este el resultado esperado para _deprecated_function()
? ¿O me estoy perdiendo algo? ¿Es posible mostrar un aviso de depuración cuando alguien intenta eliminar o agregar una acción usando una función obsoleta?
Actualizar
Me di cuenta de que simplemente no estaba viendo el mensaje de depuración, add_action
ya que lo estaba agregando bastante bajo en la página. #facepalm! Sin embargo, todavía no veo ningún aviso de depuración para el remove_action
.
add_action()
estaba realmente allí. remove_action()
no se puede manejar así.
call_user_func(function(){trigger_error('hello?');});
funciona, pero falla en una devolución de llamada registrada por add_action.