Custom Field Templateプラグインを使って、入力欄を自作する方法もありますが。functions.phpに直接書いて、入力欄を増やす手順のまとめです。

まず、アクションフックで、管理画面に項目を追加するように命令を書きます。
アクションフックについては公式サイトの「プラグイン API/アクションフック一覧」を参照のこと
 
そのうえで、add_meta_box()を使って、投稿ページ、固定ページなどに項目を追加する命令を記述します。
詳しくは公式サイトの「関数リファレンス/add meta box」を参照。

add_meta_box( $id, $title, $callback, $page, $context, $priority )
 
$id 表示された部分を囲むタグのid属性名を記載する
$title 画面上に表示されるタイトル名
$callback 実際に表示される内容の設定。関数名を記述し、表示の詳細設定を作成する
$page この追加される項目を表示する投稿タイプ。通常は'post', 'page', 'link'、自分でカスタム投稿タイプを作った場合はスラッグ名でもよい。
$context 投稿画面のどこに表示されるのかの設定。'normal'だと投稿欄の下に、 'advanced'と'side'もある。
$priority 項目の表示の優先度。'high' または 'low'で設定。この項目はとくに記述する必要はない。


以下のコードは 投稿ページに自作した項目が追加されるように記述した場合の例です。

add_action('admin_menu', 'add_custom_inputbox'); 

function add_custom_inputbox() {
    add_meta_box( 'myid','追加入力欄', 'custom_area', 'post', 'normal' );
}

この設定を書いたうえで、表示項目を設定します。

function custom_area(){
     echo 'ここの表示される内容';
}

あとはinputやtextareaなどで入力欄を作れば、表示項目は完成しますが、これだけでは保存できないので アクションフックでsave_postというのを指定して、どういう項目を保存するのかを設定します。
保存の詳細は関数でまとめます。
 
add_action('save_post', 'save_custom_postdata');


簡単に自作したカスタムフィールドの記述例をまとめると以下です。

/*投稿ページ等への投稿ページを追加するためのアクションフック*/
add_action('admin_menu', 'add_custom_inputbox');

/*追加した表示項目のデータ更新・保存のためのアクションフック*/
add_action('save_post', 'save_custom_postdata');

/*入力項目がどの投稿タイプのページに表示されるのかの設定*/
function add_custom_inputbox() {
    add_meta_box( 'myid','追加入力欄', 'custom_area', 'post', 'normal' );
}

/*実際、管理画面に表示される内容*/
function custom_area(){
 
      //これがないと入力欄が更新されない!
       global $post;

echo '価格<input type="text" name="kakaku" value="'.get_post_meta($post->ID,'kakaku',true).'"><br>';
echo '形状<input type="text" name="keijo" value="'.get_post_meta($post->ID,'keijo',true).'"><br>';
}

/*投稿ボタンを押した際のデータ更新と保存*/
function save_custom_postdata($post_id){

//kakaku
if(isset($_POST['kakaku'])){$kakaku=$_POST['kakaku']}else{$kakaku=''};
//-1になると項目が変わったことになるので、項目を更新する
if( strcmp($kakaku,get_post_meta($post_id, 'kakaku', true)) != 0 ){
update_post_meta($post_id, 'kakaku',$kakaku);
}elseif($kakaku == ""){
delete_post_meta($post_id, 'kakaku',get_post_meta($post_id,'kakaku',true));
}
//keijo
if(isset($_POST['keijo'])){$keijo=$_POST['keijo']}else{$keijo=''};
if( strcmp($keijo,get_post_meta($post_id, 'keijo', true)) != 0 ){
update_post_meta($post_id, 'keijo',$keijo);
}elseif($keijo == ""){
delete_post_meta($post_id, 'keijo',get_post_meta($post_id,'keijo',true));
}
}
この例では、セレクタやラジオボタンの場合のことを省いています。
あと、これにきちんと入力項目のエラーチェックとかをつければ、使いものになるはず...

この作り方では入力欄をある程度調整できるというメリットもあるのでCustom Field Templateプラグイン面倒くさいと思っている人はチャレンジすると良いと思います。



ブログの反応がどれくらいあるか、知りたいので、ランキングサイトに入ってみました。よろしければクリックお願いします。

にほんブログ村 デザインブログ Webデザインへ