web-dev-qa-db-ja.com

'admin_action_'とは何ですか。 $ _REQUEST ['action']フックは何に使用されますか?

admin.phpで呼び出されるアクションフックが'admin_action_'.$_REQUEST['action']です。残念ながら、admin.phpの最後ですべてがページにロードされた後(フッターでも)トリガーされるので、プラグインには少し役に立ちません。

なぜそれがそこにあるのか、なぜそのばかげた立場にあるのか、そして何か内部でそれを使っているのかどうか誰かが知っていますか?

3
wyrfel

Tracの「注釈」機能を介して、 これは3年前に追加されたことがわかりますプラグインする汎用POSTハンドラーのリクエスト後 を使用できます。

Googleコード検索で、 少なくともAkismetがこのフックを使用している であり、 core で導入されたときにそこに現れたことがわかります。 admin.phpを直接呼び出すことで動作します (プラグインページではありません)。そこから itは、末尾でリダイレクトを行うことができます 。したがって、トリックはadmin.php?action=your_actionを呼び出すことです。他のURLの動作は保証されません。

多くの(すべてではない)管理ページには、初期化の一種としてadmin.phpが含まれています。この場合、管理ページにはadmin-header.phpの後にadmin.phpが含まれるため、出力が送信される前にアクションが起動されます。これはすべての管理ページで機能するわけではありません。すべてのページにadmin.phpが含まれているわけではなく、他のユーザーが「不正」actionクエリ変数をチェックして、 「本当にそれを実行しますか?」警告( nonceが欠落しているため? )。 プラグインページの場合admin.phpはすべてを実行します :ヘッダーを表示します( noheaderクエリ変数がURL にない場合)、ページを呼び出し、フッターを表示します(コードでexit()を呼び出していない限り!)。 admin.phpexit()自体を呼び出すため、admin_action_フックは呼び出されません。

6
Jan Fabry