WordPressで、オリジナルのカスタムフィールドを追加する方法を解説します。
処理は全部で3段階ありますので、それぞれの処理についても解説します。
それでは早速、要件から整理していきましょう。

要件

オリジナルのカスタムフィールドを追加して、入力値をサイトに表示させる(下記画像がゴール)

処理(functions.php)

  1. 追加するカスタムフィールドを定義
  2. 管理画面にHTMLを出力
  3. 入力があればデータを保存
  4. 入力がなければデータを破棄

処理する順序を設計することで、ゴールに対して直線的に実装していきます。

コード

結論から知りたい方のためにまずはコードを紹介します。
コピペで動作しますので、要件に応じて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

// 構文
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関数を使用してデータを破棄します。

カスタムフィールドの値の取得

カスタムフィールドの値の取得方法については、下記の記事で解説しているので、参照してください。

カスタムフォールドの値を取得

最後に

いかがでしょうか。
カスタムフィールドはテーマによって自由度が異なります。
カスタムフィールドの指定が固定されているテーマもあるので、追加方法を知っておけば、
いつでもオリジナルの入力欄を用意して、データを扱うことができます。

カテゴリー: WordPress