Ich aktualisiere eines meiner Plugins und bin ein wenig mit veralteten Funktionen beschäftigt.
Ursprünglich hatte mein Plugin eine globale Variable und die Hauptklasse des Plugins wurde instanziiert und in der globalen Variablen gespeichert. Auf diese Weise können Benutzer die globale Funktion verwenden, um auf Funktionen in der Plugin-Klasse zuzugreifen.
$GLOBALS['my_custom_plugin'] = new my_custom_plugin();
Dann hatte ich zum Beispiel in meinen FAQ Code, der zeigte, wie man eine der Funktionen meiner Klasse aus einem bestimmten Hook entfernt und zu einem anderen Hook hinzufügt:
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' );
In meinem Update wurde die display_input()
Funktion in eine andere Klasse verschoben und ich möchte die Leute wissen lassen, wie sie darauf zugreifen können. Ich habe versucht, die ursprüngliche Funktion (in der Haupt-Plugin-Klasse) durch den folgenden Verfallshinweis zu ersetzen:
public function display_input() {
_deprecated_function( 'display_price', '2.0', 'my_custom_plugin()->display->display_input' );
return $this->display->display_input();
}
Die Funktionen add_action
und remove_action
scheinen jedoch nicht den Verfallshinweis auszulösen. Seltsamerweise verursacht das vollständige Entfernen der Funktion auch keinen Fehler, obwohl er array( $my_custom_plugin, 'display_input')
nicht vorhanden ist.
Wenn jemand versucht, direkt auf die Funktion zuzugreifen:
$my_custom_plugin->display_input();
Dann sehe ich die Debug-Hinweise. Ist das das erwartete Ergebnis für _deprecated_function()
? oder fehlt mir etwas Ist es möglich, einen Debug-Hinweis anzuzeigen, wenn jemand versucht, eine Aktion mithilfe einer veralteten Funktion zu entfernen oder hinzuzufügen?
Aktualisieren
Mir wurde klar, dass ich die Debug-Meldung für das einfach nicht sah, add_action
da ich sie ziemlich tief auf der Seite hinzufügte. #facepalm! Ich sehe jedoch immer noch keinen Debug-Hinweis für die remove_action
.
add_action()
war tatsächlich da. remove_action()
kann nicht so gehandhabt werden.
call_user_func(function(){trigger_error('hello?');});
funktioniert, aber es schlägt in einem Rückruf fehl, der pro add_action registriert wurde.