[wordpress] カスタムフィールドをより使いやすく

カスタムフィールド

カスタムフィールドのベーシックな使い方を [wordpress] 初めてのカスタムフィールド でご紹介しましたが、もう少し使いやすくする応用編をご紹介します。

一般的な方法でカスタムフィールド使用する場合、2度目からは「名前」が登録されていて、ドロップダウンメニューから選択し、値を入力する手順です。ちょっと面倒ですし、記入忘れも有りえます。

カスタムフィールド

こんな感じに名前と入力スペースが初めから表示されていれば便利ですよね?

カスタムフィールド

functionに追記する

子テーマのfunction.phpに以下のコードを追加して下さい。(ご自身の内容に書き換えて下さい。)


// 投稿画面カスタムフィールドボックス
    function add_info_fields() {
    	//add_meta_box(表示される入力ボックスのHTMLのID, ラベル, 表示する内容を作成する関数名, 投稿タイプ, 表示方法)
    	//第4引数のpostをpageに変更すれば固定ページにオリジナルカスタムフィールドが表示されます(custom_post_typeのslugを指定することも可能)。
    	//第5引数はnormalの他にsideとadvancedがあります。
    	add_meta_box( 'restaurant_setting', '店舗情報', 'insert_info_fields', 'post', 'normal');
    }
    add_action('admin_menu', 'add_info_fields');
          
// カスタムフィールドの入力エリア
    function insert_info_fields() {
    	global $post;
     
//投稿画面に表示される入力エリア
    	echo '住所: <input type="text" name="book_name" value="'.get_post_meta($post->ID, '住所', true).'" size="50" /><br>';
    	echo '営業時間: <input type="text" name="book_author" value="'.get_post_meta($post->ID, '営業時間', true).'" size="50" /><br>';
    	echo '電話番号: <input type="text" name="book_price" value="'.get_post_meta($post->ID, '電話番号', true).'" size="50" /> <br>';
    	
    }
         
// カスタムフィールドの値が未入力の場合は表示しない
    function save_info_fields( $post_id ) {
    	if(!empty($_POST['住所'])){ //題名が入力されている場合
    		update_post_meta($post_id, '住所', $_POST['住所'] ); //値を保存
    	}else{ //題名未入力の場合
    		delete_post_meta($post_id, '住所'); //値を削除
    	}
    	
    	if(!empty($_POST['営業時間'])){
    		update_post_meta($post_id, '営業時間', $_POST['営業時間'] );
    	}else{
    		delete_post_meta($post_id, '営業時間');
    	}
    	
    	if(!empty($_POST['電話番号'])){
    		update_post_meta($post_id, '電話番号', $_POST['電話番号'] );
    	}else{
    		delete_post_meta($post_id, '電話番号');
    	}
    
    }
    add_action('save_post', 'save_info_fields');

カスタムフィールドを出力する

出力コードも忘れないで下さいね。参考 [wordpress] 初めてのカスタムフィールド 

以前の事で、どのサイトに書かれていたコードを参考にさせて頂いたのか覚えあたりません。掲載して下さった方、ありがとうございました。

Leave a Reply

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

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

CAPTCHA


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