テキストフィールドの作成・出力

プラグイン「Advanced Custom Fields」を使わずに、カスタムフィールドを設置して、入力内容を保存。そして、表示させるまでのスニペットを紹介します。

テキストフィールドの作成

記事の編集画面にテキストフィールドの入力欄を作ります。使用しているテーマの「functions.php」に以下を追加します。

以下は、投稿タイプにテキストフィールドを2つ作るコードです。

PHP

// カスタムフィールドの作成
add_action('admin_menu', 'addExtraField');

function addExtraField() {
  // 引数はそれぞれ、ID, 編集画面に表示されるタイトル, 実行関数名, 対象の投稿タイプ
add_meta_box('youtubeField', 'YouTubeのID', 'youtubearea', 'post');
add_meta_box('vimeoField', 'vimeoのID', 'vimeoarea', 'post');
}

// youtube
function youtubearea(){
  global $post;
  echo '<input type="text" name="youtube" style="width:100%" value="'.get_post_meta($post->ID, "youtube", true).'">';
}
// vimeo
function vimeoarea(){
  global $post;
  echo '<input type="text" name="vimeo" style="width:100%" value="'.get_post_meta($post->ID, "vimeo", true).'">';
}

上記で、テキストフィールドの入力欄の作成が完了です。

次に、作成したテキストフィールドのに入力された値を保存する機能を追加します。
以下のコードを「functions.php」に記述します。

PHP

/* 保存 */
add_action('save_post', 'saveExtraFieldYouTube');

function saveExtraFieldYouTube($post_id){
  // 入力されている場合は保存
  if(!empty($_POST['youtube'])){
    update_post_meta($post_id, 'youtube', $_POST['youtube'] );
  }else{
    delete_post_meta($post_id, 'youtube');
  }
}

add_action('save_post', 'saveExtraFieldVimeo');

function saveExtraFieldVimeo($post_id){
  // 入力されている場合は保存
  if(!empty($_POST['vimeo'])){
    update_post_meta($post_id, 'vimeo', $_POST['vimeo'] );
  }else{
    delete_post_meta($post_id, 'vimeo');
  }
}

かかかず
かかかず

上記の保存のコードがないとフィールドの値が保存されないので注意しましょう。

add_meta_box()の引数

add_meta_box()の引数
  • 第一引数「ID」 … フィールドのID名になります。編集画面に<div id=”priceField”>としてhtml展開されます。
  • 第二引数『編集画面に表示されるタイトル』 … 編集画面に表示されるカスタムフィールドのタイトル。
  • 第三引数『実行関数名』 … 入力欄を表示する関数名。任意ですが、他と被らない名前にします。
  • 第四引数『対象の投稿タイプ』 … 入力欄をどの投稿タイプに設置するかを設定します。通常の投稿は「post」です。

テキストーフィールドに入力した値の出力

テキストーフィールドに入力した値の表示は、以下のように記述します。

PHP

<?php
 echo get_post_meta($post->ID, 'youtube', true);
?>

このように記述することで、保存した内容が画面に表示されます。上記は、投稿IDのカスタムフィールド「youtube」の値を表示する、という表記です。