SettingsAPIを使わずに管理画面のオプションページを作る

SettingsAPIは便利だが、単純にoptionを保存するだけなら良いが、それだけでは対処できないケースがある。

例えばPOSTデータを拾って、整理してから保存したい時もあるが、APIにお任せだとそれが出来ない、もしくは方法が見つからない。

あるいはオプション名に連番がついていて可変の場合も同様だ。

そんな時は、がんばってこれを読もう。昔ながらのやり方でアプローチすれば良いのだ。

しかし、POSTデータを保持したまま自分のページに戻ると、遷移するときに「フォームデータを再送信しますか?」のダイアログが出てしまいやっかいだ。

その場合はリダイレクト処理を加えるしか無いようだ。ところが多くの場合headers already sentのメッセージが出てしまい、うまく行かない。文字通り、リダイレクト実行時にすでにヘッダーが送り出されているわけだ。

結局は適切なフックに処理を引っ掛けるしか無い。

それについてはここで言及されている。

‘admin_post_xxx’というフックを使えば良いようだ。この現象についてはっきり書かれたものは初めて見るので、非常に参考になった。

‘admin_post_xxx’というフックは、admin-post.phpに投げるときのみ有効。

nonceチェックをした上で、’admin_init’を使うのが吉だろう。

その後、SettingsAPIを避ける方法のブログがいくつも出てきて、なんだかんでこのAPIは厄介者だと思われているらしく、ちょっと安心した。
https://whoischris.com/using-update_option-get_option-instead-messy-settings-api-wordpress-plugin-development/

コメント

タイトルとURLをコピーしました