ワードプレス(WordPress)の設定ページを作成する

本当であればClassを使ったりした方がいいんだろうけど、ちょっとまだPHPに詳しくないのでfunctions.phpに書いてなるべくカンタンに分かりやすく作れる最低限のものを書いてみる。
正直まだちょっとよく分からない部分があるので「たぶん」で書きます。

最終的なコードを最初に書いちゃうパターン。

要件

WordPress管理画面の左メニューの「設定」の中にメニューを作る方法もあるが、クライアントさんが使う用にメニューを制限するので、

  • リンクはTOPレベルのメニューとして設置
  • データはwp_optionsに保存される(get_optionで取得できる)

としてます。

WordPress管理画面にメニューを追加する関数

引数の説明

$page_title
ページタイトル。その設定ページを開いたときのTITLEタグのものだと思われる。

$menu_title
メニュータイトル。管理画面の左メニューに表示されるテキストだと思われる。

$capability
メニューを表示するユーザーの権限。これちょっとよく分からないけど、管理者なら「edit_themes」、編集者なら「edit_posts」あたりでいいのかなー?

$menu_slug
メニューのスラッグ。これ何に使うかちょっと分からないけど設定ページのURLパラメータにはなっていた。

$function
メニューページを表示した時に実行される関数。まあページ内のソースと思っててもいいかと。

$icon_url
メニューアイコン。管理画面の左メニューに出るリンクのアイコン。テーマとかに画像あげて呼び出してもいいらしいけどわざわざ作るほどの手間かけるときってあまりないので、Dashiconを指定でいいかと。「dashicons-admin-comments」とか。

$position
表示位置。小数点指定するとかぶらないからいいらしい。

ただこの「add_menu_page」をfunctions.phpにペロっと書いてもエラー出るので、admin_menuのアクションに引っ掛けて呼び出すみたいです。

これでとりあえずメニューは出ますが、実行される関数とかも何も書いてないので駄目です。早まるな。
とりあえず実行される関数「create_my_setting_page」を設定しましょう。

これこのまんま作成した設定ページに表示されます。
インクルードでもしたい時は、

こういう感じでテーマ内にphpファイル用意して呼び出せばいい。

そしたら次はフォーム項目を用意していきますが、その前に、そのデータの保存先となる箱を用意する必要があるようです。
正直これもよく分かってないんですが、とりあえず

引数の説明

$option_group
設定グループ名。これよく分からん。でもこのページで使うものひとまとめでグループにしちゃっていいかなと。

$option_name
オプションの名前。フロントだとたぶんこれで呼び出すはず。

$sanitize_callback
値を無害化する関数。これ全然わからん。たぶん整形して正しい形で保存するんだと思うけど、一旦使わない、使えない汗。

これもアクションに引っ掛けて呼び出すんですが、今度はadmin_initらしい。

これ自体は最初に実行した関数内で、呼び出すみたいなの。
つまり今の時点でのコードは

ちなみに設定ページでjQueryUIとか独自のjsとか呼び出したいときは、wp_enqueue_scriptを使うんですが、それ自体は

こういう感じなんですが、これも設定ページのみで実行したいので、合わせると

あとはページの中身ですね。
ごちゃるとややっこしいので、中身はインクルードしたパターンで、べにょっと書きます。

こんな感じです。

たぶんきっと、更新後の完了メッセージとか色々やれることあるんだと思うけど、とりあえず力尽きたのでここまで…。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です