管理画面にページを追加 #2
add_options_page()
このページは前ページの、「管理画面にページを追加」の別パターンといえるページ。
今回は、add_options_page() を使って管理画面の設定メニューに項目を追加した。まぁ、これはプラグインなどですでに何度も使っているものではあるのだけれど。
くどいけれど、これも add_posts_page() と使い方はほぼ同じ。
3つ目の $capability に関しては、詳細を codex の説明で見たほうが良いと思われる。
4つ目の $menu_slug はこのページを表示する時の slug として使用されるので重要。
そして 5つ目の $function は実際に表示するこのページの内容のコードとなる関数を指定する。
と、同じ流れで続いていく。
delete revision page
で、今回は何のページを作るかというと。
これも、長い間お世話になってきたプラグインで、Better Delete Revision というものがある。
たまってる revision の投稿を消去するのに重宝してたんだけど、これもそれだけの機能で使っているのなら、プラグインとしてではなく、自作したほうがいいだろう、と思い立った。
そのプラグイン、Better Delete Revision の中を覗かせてもらうと実にシンプルで、それを参考にして作らせてもらった。まぁ、でも、そのプラグインはページ遷移で処理させるのを、自分的には Ajax で実装させた。
ということで、できたページもとてもシンプルでこんなかんじ。
と、いうことで、add_options_page() 関数で指定した、メインとなる関数。
revision 投稿の情報は、プラグインにならって、SQL にて取得。
けれど、実際の削除は WordPress に備わっている、wp_delete_post_revision() という関数に委ねる。この関数は、指定された ID の投稿が revision ならば削除してくれるというもの。まぁ、ちょっと安心なんだな、これが。
Ajax であるからして、ちょっとセキュリティなものも考えて、その認証は、ログインしているのが管理者であることと、WordPress の nonce でカバー。まぁ、そんなところ。
Ajax とか style 設定とかの Javascript のコードもページの HTML と一緒に書き出してる。ここで一緒に書き出しておけば、revision 投稿が存在しない時に Javascript は読み込まれない。
で、あとは Ajax を受ける方の php だけ。
これは管理画面の中だけのことなので、Ajax を登録するアクションフックは一つだけですむ。
get_current_user_id() 関数を使って、ログインしているユーザーが管理者であることを確認し、nonce の認証が true ならば、SQL で revision 投稿の ID を取得し、それを WordPress の wp_delete_post_revision() 関数に渡して削除の処理をさせる、といった流れ。なんてことはない。
以上。
これにて、またひとつプラグインを減らすことができた。
Post : 2021/08/20 18:46
Comments feed
Trackback URL : https://strix.main.jp/wp-trackback.php?p=167488