プラグイン「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()の引数
テキストーフィールドに入力した値の出力
テキストーフィールドに入力した値の表示は、以下のように記述します。
PHP
<?php
echo get_post_meta($post->ID, 'youtube', true);
?>
このように記述することで、保存した内容が画面に表示されます。上記は、投稿IDのカスタムフィールド「youtube」の値を表示する、という表記です。