【WordPress】【PHP】記事投稿画面に、カスタムフィールドを表示する他

  • 投稿 : 2018-09-29
custom-fields-input01.png

WordPress標準の機能でもカスタムフィールドを表示できますが、やぼったくなるので自身で表示・更新できるといいなという話で実際にやってみました。

Step 1:投稿画面にカスタムフィールドを表示する

function infobox_ex() {
  add_meta_box( 'infobox', '付加情報', 'infobox_ex_callback', 'post', 'normal');
}
add_action('admin_menu', 'infobox_ex');
 
// 投稿画面に表示するHTML 
function infobox_ex_callback() {
  global $post;

  echo '画像URL: <input type="text" name="img_url" value="'.get_post_meta($post->ID, 'img_url', true).'" style="width:100%" /><br>';

}

上記をテーマのfunctions.phpに追加してください。これだけで、img_urlというカスタムフィールドを表示します。

Step 2:更新できるようにする

// 保存処理
function save_infobox_ex( $post_id ) {
  if(!empty($_POST['img_url'])){ 
    update_post_meta($post_id, 'img_url', $_POST['img_url'] ); 
  }else{ //未入力の場合
    delete_post_meta($post_id, 'img_url'); 
  }
  
}
add_action('save_post', 'save_infobox_ex');

上記をさらに追記することで、内容がDBに保存できるようになります。
/wp-admin/post.php 19行目以降をみると、$_GET['post']、$_POST['post_ID'] をきちんと処理しているようにみえるので・・。 -->

スポンサーリンク