2018年3月8日SHAREツイートシェアはてブLINEPocketカスタムフィールドを自作する手順を記します。ちなみにカスタムフィールドとは画像の赤枠部分。ここにメタボックスという、独自の領域を作成し、内側に入力フォームを用意していきます。カスタムフィールドの使い方Codex作成するサンプル今回、説明で使用するサンプルはこちら。赤枠の部分が作成するメタボックス。そこで入力したテキスト(色指定)を青枠のショートコードで出力します。出力したプレビュー画面がこちら。サンプルのソースコード全文。動作確認する場合はfunctions.phpにコピペしてください。functions.php//==============================================================================////カスタムフィールドテスト(文字列出力)//カスタムフィールドのテキストに入力された文字列をショートコードで出力します。{return;//nonceを認証できなかった}//自動保存ルーチンかどうかチェック。==//予約投稿時は、データが有るにも関わらず$_POSTからデータ取得ができないので、//issetでデータ確認が出来るときのみ値の更新処理を行います。style=\"color:{$data_color}\">{$data_str}</p>";});メタボックスの作成アクションフックを利用してメタボックスを作成します。low)null);//コールバック時に渡す引数があれば指定}});上記コードだと、投稿ページと固定ページの場合にメタボックスを作成するようにしています。コールバック関数に'PeralabHello_CustomBoxCreate'を指定しています。入力フォームの作成はそちらのコールバックで行います。$selected>{$menu[1]}</option>";}?></select></div><?php}コールバックの引数に$postが渡されて、現在の投稿記事のデータが入っています。$post->IDで投稿IDが取得できます。初回以外はデータが入力済みのため、フォーム作成時も入力済みのデータを反映させるようにします。関数でデータベースからデータを取得します。$keyはデータベースに保存しているキー名です。後述するデータベースに値を保存するupdate_post_meta関数で指定したのと同じ$keyを使用します。trueを指定すれば文字列として単一の値を取得できます。クラスや配列を保存していた場合も、保存した時、そのままの形で受け取れます。falseの場合はカスタムフィールド全体の値を配列として受け取れます。var_dumpなどで値を出力してみると分かりやすいかと思います。単一の値として受け取ります。get_post_metaで受け取った値は、空の場合もあるので使用前に必ず空チェックをします。空文字で返ってきます。入力フォームのセキュリティ対策として、wp_nonce_field関数を使ってnonceを作成しています。上記コードでこのようなフォームが出来上がります。{return;//nonceを認証できなかった}//自動保存ルーチンかどうかチェック。==//予約投稿時は、データが有るにも関わらず$_POSTからデータ取得ができないので、//issetでデータ確認が出来るときのみ値の更新処理を行います。関数を登録して行います。記事を保存した時や、公開した時に呼び出されます。$post_id(投稿記事ID)が渡されます。実際に値を保存する前に、保存しても問題ないデータなのかを確認します。wp_verify_nonce関数でnonceが確実に自分で作成した入力フォームからのデータであることをチェックしています。次に自動保存によるデータ保存なのか確認しています。今回のプラグインは自動保存の場合、何もせず処理を終えるようにしています。パーミッション(権限)の確認を行います。ユーザーが編集権限を持っていないのならば、保存処理をしません。値の更新(保存)処理を行います。