WordPressで、オリジナルのカスタムフィールドを追加する方法を解説します。
処理は全部で3段階ありますので、それぞれの処理についても解説します。
それでは早速、要件から整理していきましょう。
要件
オリジナルのカスタムフィールドを追加して、入力値をサイトに表示させる(下記画像がゴール)
処理(functions.php)
- 追加するカスタムフィールドを定義
- 管理画面にHTMLを出力
- 入力があればデータを保存
- 入力がなければデータを破棄
処理する順序を設計することで、ゴールに対して直線的に実装していきます。
コード
結論から知りたい方のためにまずはコードを紹介します。
コピペで動作しますので、要件に応じてmeta_keyの部分を書き換えて使用してください。
現在はoriginal_textになっています。
//追加するカスタムフィールドを定義
function define_custom_fields() {
add_meta_box( 'meta_id', 'オリジナルテキスト', 'draw_custom_fields', 'post', 'normal');
}
add_action('admin_menu', 'define_custom_fields');
//管理画面にHTMLを出力
function draw_custom_fields() {
global $post;
echo '<p>オリジナルテキスト : <input type="text" name="original_text" value="'.get_post_meta($post->ID, 'original_text', true).'" size="50"></p>';
}
//カスタムフィールドの値を保存
function save_custom_fields( $post_id ) {
if(!empty($_POST['original_text'])) {
update_post_meta($post_id, 'original_text', $_POST['original_text'] );
} else {
delete_post_meta($post_id, 'original_text');
}
}
add_action('save_post', 'save_custom_fields');
各処理の解説
追加するカスタムフィールドを定義
function define_custom_fields() {
add_meta_box( 'meta_id', 'オリジナルテキスト', 'draw_custom_fields', 'post', 'normal');
}
add_action('admin_menu', 'define_custom_fields');
解説
アクションフック(admin_menu)を使用して、管理画面にカスタムフィールドを追加します。
add_meta_boxは、WordPressの組み込み関数で、構文は下記のようになっています。
実際の記述と照らし合わせます。
// 構文
add_meta_box($id, $title, $callback, $screen, $context, $priority, $callback_args)
// 実際の記述
add_meta_box( 'meta_id', 'オリジナルテキスト', 'draw_custom_fields', 'post', 'normal');
引数解説
$id : メタIDを指定します。メタ情報の保存が成功したタイミングで生成される
$title : 出力画面のオリジナルテキストというタイトルが該当
$callback : 管理画面にHTMLを出力する関数draw_custom_fields()
$screen : どの機能にカスタムフィールドを用意するかを定義する(投稿? 固定?)
$context : normalとsideが使用できる
$priority : 表示優先度の指定
管理画面にHTMLを出力
function draw_custom_fields() {
global $post;
echo '<p>オリジナルテキスト : <input type="text" name="original_text" value="'.get_post_meta($post->ID, 'original_text', true).'" size="50"></p>';
}
解説
上記のadd_meta_box()のコールバックで定義される、HTMLの出力関数です。
name="original_text"
value="'.get_post_meta($post->ID, 'original_text', true).'"
nameとvalue値に追加したいカスタムフィールドのmeta情報を格納します。
入力があればデータを保存 入力がなければデータを破棄
function save_custom_fields( $post_id ) {
if(!empty($_POST['original_text'])) {
update_post_meta($post_id, 'original_text', $_POST['original_text'] );
} else {
delete_post_meta($post_id, 'original_text');
}
}
add_action('save_post', 'save_custom_fields');
解説
if(!empty($_POST[‘original_text’]))で入力データの有無をチェックします。
入力値が存在する場合は、update_post_meta関数を使用して、データを保存します。
入力値が存在しない場合は、delete_post_meta関数を使用してデータを破棄します。
カスタムフィールドの値の取得
カスタムフィールドの値の取得方法については、下記の記事で解説しているので、参照してください。
最後に
いかがでしょうか。
カスタムフィールドはテーマによって自由度が異なります。
カスタムフィールドの指定が固定されているテーマもあるので、追加方法を知っておけば、
いつでもオリジナルの入力欄を用意して、データを扱うことができます。
コメント