私は自分のプラグインの1つを更新していますが、廃止予定の機能に少し行き詰まっています。
元々、私のプラグインにはグローバル変数があり、プラグインのメインクラスはインスタンス化され、グローバル変数に格納されていました。このように、ユーザーはグローバルを使用してプラグインクラスの関数にアクセスできます。
$GLOBALS['my_custom_plugin'] = new my_custom_plugin();
次に、たとえば、私のFAQに、特定のフックからクラスの関数の1つを削除し、別のフックに追加する方法を示すコードがありました。
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' );
今、私の更新では、display_input()
関数は別のクラスに移動されており、それにアクセスする方法を人々に知らせたいと思います。(メインプラグインクラスの)元の関数を次の廃止通知で置き換えてみました。
public function display_input() {
_deprecated_function( 'display_price', '2.0', 'my_custom_plugin()->display->display_input' );
return $this->display->display_input();
}
ただし、add_action
およびremove_action
関数は非推奨通知をトリガーしないようです。奇妙なことに、関数が完全に削除されても、array( $my_custom_plugin, 'display_input')
存在しなくてもエラーは発生しません。
誰かが関数に直接アクセスしようとした場合:
$my_custom_plugin->display_input();
次に、デバッグ通知が表示されます。これは期待される結果_deprecated_function()
ですか?または私は何かを逃していますか?廃止された関数を使用してアクションを削除または追加しようとしたときにデバッグ通知を表示することは可能ですか?
更新
add_action
ページのかなり下に追加しているため、のデバッグメッセージが表示されないことに気付きました。#facepalm!ただし、のデバッグ通知はまだ表示されませんremove_action
。
add_action()
は実際にありました。remove_action()
そのように扱うことはできません。
call_user_func(function(){trigger_error('hello?');});
動作ですが、add_actionごとに登録されたコールバックで失敗します。