独自のカスタムフィールドを設定するHTMLPHPWordpressカスタムフィールド2014.04.23WordPressのサイト構築で、簡単な機能はプラグインを使わずfunctions.phpに直接書いて実装することがが多くなりました。中でもカスタムフィールドが設定できると自由度が高くなりますね。独自のカスタムフィールドを設定するソースはよく紹介されてますが、ここでは流れや意味など理解を深めながら説明したいと思います。次の条件でカスタムフィールドを作成することとします。:テキストフィールドアクションを設定するまず管理画面にメタボックスを追加するアクションと、投稿が作成、更新された時のアクションを設定します。アクションを設定するにはadd_action()という関数を使います。);パラメータは次の通り。$hookによって実行される関数名。$function_to_addで指定した関数のパラメータの数add_actionでアクションを設定してみます。今回は$hookと$function_addだけで充分です。'save_weather');上のアクションは管理画面のメニューが配置された後に(admin_menu)、編集画面にカスタムフィールドを追加する関数add_weatherを実行、下のアクションは投稿が作成、または更新された時(save_post)にデータを保存する関数save_weatherを実行するということになります。API/アクションフック一覧をご覧下さい。管理画面に入力フィールドを追加する入力フィールドを配置するためのメタボックスを追加する関数add_weatherを設定します。メタボックスを追加するにはadd_meta_box()を使います。);パラメータは次の通り。表示したい編集画面を指定。>...</div>というようにメタボックスとして作られたdivのid名に使われています。追加されるメタボックスのid名ということです。補足2$contextのsideは指定すると編集画面の右サイドに表示されますが、normalとadvancedは実際指定してみてもどちらも左サイドに追加されるのでその違いが分からないと思います。試してみたところ、こんな違いがあるようです。$priorityのhigh、lowを指定した場合、既存のメタボックスも含めて配置される順序が決定される。原則既存のメタボックスの後ろに追加されるが、$priorityで優先順位を指定した場合、advancedが指定されたメタボックスの中で順序が決定される。実際にadd_weatherを設定します。編集画面(スラッグで指定)}次はadd_meta_boxの第3パラメータで指定した関数insert_weatherでめたボックスの中にタイトルや入力フィールドなどをHTMLで出力します。'<p>天気を入力します</p>';}<テキストボックスとラベル、説明がこれで出力されます。テキストエリアもOKです。その他のフォームのアイテム(ラジオボタンやチェックボックス、プルダウンメニューなど)についてはもう少し処理が必要になると思うので、また試してみて別の記事で紹介したいと思います。3行目のwp_nonce_field()はリクエスト強要(CSRF)対策のためのnonceを取得、または表示するための隠しフィールドを追加します。フォームの出力から内容の保存まで一貫して自身のサイトで完了しているかどうかを検証するのに使われます。リクエスト強要(CSRF)対策やnonceについてさらに詳しい情報は以下のページで確認できます。ITカスタムフィールドの入力内容を保存する投稿が作成、更新された時の関数save_weatherを設定します。}}一気に書きましたが、ひとつずつ説明していきます。$post_id;}まず、先のinsert_weatherで設定したnonceの値を取得します。次の行のwp_verify_nonce()でnonceの値を比較し、値が合っていなければ処理をしません。}保存される時に自動保存ルーチンかどうかを調べ、そうだった場合は処理をしません。}current_user_can()でユーザー権限を調べ、投稿の編集権限が無ければ処理をしません。true));}カスタムフィールドの値を調べ、既存のデータが無い場合は、add_post_meta()でデータの作成を、既存のデータと入力フィールドのデータが違う場合はupdate_post_meta()でデータの更新を、入力フィールドのデータが空の場合はdelete_post_meta()で既存のデータを削除します。'<p>作成した日の天気を入力します。}}?>カスタムフィールドの値を表示するカスタムフィールドの値を取得するには、get_post_meta()を使います。指定したキーの単一の値を取得する場合はtrue、複数の値を取得する場合はfalseを指定。falseの場合は指定したキーの全ての値を配列で返すここでは今表示されている投稿ページの「weather」というカスタムフィールドの値がほしいので、表示したい場所に次のコードを記述します。?>まとめ以上、長々と説明しましたが、独自のカスタムフィールドの追加方法をマスターすれば、Webに疎い人のための入力支援、さらに工夫すればWordpressを顧客管理や在庫管理などにも利用できると思います。Wordpressの自由度の高さは驚きです。中・上級者向けですがこの2冊を購入してから、Wordpressのサイト構築の幅が広がりました。記事のタイトルのリンク先を指定する。CoreserverでBackWPupを導入するのに気をつけること。編集画面に指定URLを入力するためのカスタムフィールドを設定します。独自のカスタムフィールドを設定する」で編集画面にカスタムフィールドを追加する方法を紹介しましたが、今回も同じ方法で追加します。記事のタイトルのリンク先を指定する。改良ソースには下記サイト様の内容を引用させて頂きました。