WordPressで要望に合わせて管理画面にメタボックスを追加する方法

Pocket

こんにちは。インターンの疋田です。今回は、WordPressでWebサイトを構築する際に要望に合わせて投稿画面にメタボックスを追加する2つの方法をご紹介します。

  1. functions.phpにコードを書いて追加する方法
  2. プラグインを利用する方法

自前でfunctions.phpに書いて追加する方法

まずは、自分で管理画面にフォームを表示させて、そこからデータベースに格納する方法をご紹介します。

/*********************************************

投稿画面に入力フォームを設置して、入力したデータを
データベースのwp_postmetaテーブルに格納する処理。

 *********************************************/
add_action('admin_menu', 'add_meta_form');
add_action('save_post', 'save_meta_data');

//フォームを追加
function add_meta_form(){
  add_meta_box('meta_data', 'データ入力フォーム', 'form_post_layout', 'post', 'normal', 'high');
}

//投稿画面に表示するフォームのレイアウト
function form_post_layout(){
  global $post;
  //管理画面に出力するフォーム
  echo "<h3>パーマリンク以外のリンク</h3><br>";
  echo '<input type="text" size="70" name="link" value="' . get_post_meta($post->ID, '外部リンク', true) . '"c>';

}

/******************************************

フォームに入力したデータをデータベースに書き込む処理

 *******************************************/

//値をwp_postmetaに書き込む
function save_meta_data($post_id){
  $link = $_POST['link'];

  //DBに保存するキーとデータ
  $save_data = array(
    'meta_data1' => array(
      'meta_value' => $link,
      'meta_key' => '外部リンク'
    )
  );
  //フォームに入力されているデータを保存する。
  foreach($save_data as $save_datum){
    if("" == $save_datum['meta_value']){
      delete_post_meta($post_id, $save_datum['meta_key']);
    }
    elseif("" == get_post_meta($post_id, $save_datum['meta_key'])){
      add_post_meta($post_id, $save_datum['meta_key'], $save_datum['value'], true);
    }
    elseif($save_datum['meta_value'] != get_post_meta($post_id, $save_datum['meta_value'])){
      update_post_meta($post_id, $save_datum['meta_key'], $save_datum['meta_value']);
    }
  }
}

今回は、ちょこっと使えるようにリンクという項目で作ってみました。パーマリンク以外のリンクを貼りたいってとき意外とあると思います。そんなときにフォームにURLを入れてDBに入れておくと、こんな感じに使えて便利だったりします。

if(get_post_meta($post->ID, 'リンク', true)){
  $link = get_post_meta($post->ID, 'リンク', true);
}
else{
  $link = get_permalink($post->ID);
}

今回のコードでやってることは簡単に言うと、投稿画面に任意のフォームを作って、更新ボタンを押した時にwp_postmetaにキーと値を格納してるって感じです。呼び出したいときはget_psot_meta関数で簡単に呼び出せます。

 Advanced Custom Fieldsプラグインを使う方法

上でやったことを簡単に、しかもそれ以上のことができる高機能プラグインがAdvanced Custom Fieldsというプラグインです。

このプラグインはGUIで簡単にフォーム等の生成が出来、並び替えなども可能です。入力フォームを作成して、それを表にして表示させたりするには最適なプラグインです。マニュアルが充実しているし、独自の関数も提供されるので、自由度が高いです。

フィールドグループを新規追加_‹_やったことは忘れるな!_—_WordPress

フィールドグループを新規追加_‹_やったことは忘れるな!_—_WordPress 2

スクリーンショット 2014-05-08 19.58.26

さらに有料で便利な拡張プラグインが用意されています。

以上、2つのカスタムフィールドを利用した場合のメタボックスの追加方法でした。

投稿者紹介

株式会社ユニキャスト
私たちは、テクノロジに魅せられた個性あふれるメンバーによって構成された茨城県日立市に本社を構えるベンチャー企業です。
”テクノロジを通して「驚き」と「感動」を創造し、人々の「夢」と「笑顔」を支えます。” の経営理念をモットーに明るい未来を描き、ワクワクする企画提案を続けて参ります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください