Je mets à jour un de mes plugins et je suis un peu coincé avec des fonctions obsolètes.
À l'origine, mon plugin avait une variable globale et la classe principale du plugin était instanciée et stockée dans la variable globale. De cette façon, les utilisateurs pourraient utiliser le global pour accéder aux fonctions de la classe de plugin.
$GLOBALS['my_custom_plugin'] = new my_custom_plugin();
Ensuite, par exemple, dans ma FAQ, j'avais un code qui montrait comment supprimer l'une des fonctions de ma classe d'un hook spécifique et l'ajouter à un autre hook:
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' );
Maintenant, dans ma mise à jour, la display_input()
fonction a été déplacée dans une autre classe et je veux que les gens sachent comment y accéder. J'ai essayé de remplacer la fonction d'origine (dans la classe principale du plugin) par l'avis de désapprobation suivant:
public function display_input() {
_deprecated_function( 'display_price', '2.0', 'my_custom_plugin()->display->display_input' );
return $this->display->display_input();
}
Cependant, les fonctions add_action
et remove_action
ne semblent pas déclencher l'avis de dépréciation. Bizarrement, la suppression complète de la fonction ne provoque pas non plus d'erreur, même siarray( $my_custom_plugin, 'display_input')
n'existe pas.
Si quelqu'un essaie d'accéder directement à la fonction:
$my_custom_plugin->display_input();
Ensuite, je vois les avis de débogage. Est-ce le résultat attendu _deprecated_function()
? ou est-ce que je manque quelque chose? Est-il possible d'afficher un avis de débogage lorsque quelqu'un essaie de supprimer ou d'ajouter une action à l'aide d'une fonction obsolète?
Mise à jour
J'ai réalisé que je ne voyais tout simplement pas le message de débogage pour le add_action
car je l'ajoutais assez bas sur la page. #facepalm! Cependant, je ne vois toujours aucun avis de débogage pour le remove_action
.
add_action()
était réellement là. remove_action()
ne peut pas être manipulé comme ça.
call_user_func(function(){trigger_error('hello?');});
Travaux intéressants , mais il échoue dans un rappel enregistré par add_action.