カスタムフィールドを使うプラグインひな形
/************** APPEND YUZUMARU ************** entry_meta を 自分のファンクション名に置き換える ex entry_meta_ -> my_meta_ */ /*-------------------------------------------*/ /* ファンクションサブメニューページのタイトル*/ /*-------------------------------------------*/ $entry_meta_sname ="entry_meta"; /*-------------------------------------------*/ /* ファンクションプルダウン表示時のタイトル */ /*-------------------------------------------*/ $entry_meta_pname ="エントリーメタ"; /*-------------------------------------------*/ /* ファンクションスラッグ名 */ /*-------------------------------------------*/ $entry_meta_slagname="entry_meta_slag"; /*-------------------------------------------*/ /* ENTORYの入力領域作成 エントリー項目を設定 */ /*-------------------------------------------*/ $entry_meta_boxes = array( "ページディスクリプション" => array( "name" => "headtitle", "std" => "", "title" => "ページディスクリプション", "titlesub" => "", "type" => "checkbox", "description" => "ページディスクリプションを非表示にする"), "ヘッダ画像URL" => array( "name" => "headimg", "std" => home_url().'/', "title" => "ヘッダ画像 URL", "titlesub" => "980x250推奨 好きなサイズでOK httpで始まらない場合:なし 空欄:サイトタイトルバナー", "type" => "text", "description" => "▲ヘッダ画像を入力"), "グローバルナビ" => array( "name" => "gnavs", "std" => "", "title" => "グローバルナビ", "titlesub" => "", "type" => "checkbox", "description" => "グローバルナビを表示しない"), "ソーシャルボタン" => array( "name" => "snssw", "std" => "", "title" => "ソーシャルボタン", "titlesub" => "", "type" => "checkbox", "description" => "ソーシャルボタンを表示しない"), "日付付加" => array( "name" => "datebox", "std" => "", "title" => "投稿日表示", "titlesub" => "", "type" => "checkbox", "description" => "投稿日をつけない"), "サイドボックスタイトル" => array( "name" => "sideboxtitle", "std" => "", "title" => "サイドボックスタイトル", "titlesub" => "見出しタグなしで表示されるのでタグは自分で付ける。<h4 class=テーマ標準>推奨。", "type" => "text", "description" => "▲サイドボックスタイトルを設定"), "サイドボックス" => array( "name" => "sidebox", "std" => "", "title" => "サイドボックス", "titlesub" => "", "type" => "textarea", "description" => "▲サイドボックスのリンク集を設定") ); /* ここから下は触らなくても大丈夫 (「設定」のところの「エントリーページカスタマイズ」ぐらいかな?)*/ /* function body エントリーの表示 */ function entry_meta_boxes() { global $post, $entry_meta_boxes; foreach($entry_meta_boxes as $meta_box) { $meta_box_value = get_post_meta($post->ID, $meta_box['name'], true); if($meta_box_value == "") $meta_box_value = $meta_box['std']; if($meta_box['type']=='text'){ echo'<input type="hidden" name="'.$meta_box['name'].'_noncename" id="'.$meta_box['name'].'_noncename" value="'.wp_create_nonce( plugin_basename(__FILE__) ).'" />'; echo'<span style="font-weight: bold;">■'.$meta_box['title'].' </span>'.$meta_box['titlesub']; echo'<textarea name="'.$meta_box['name'].'" cols="54" rows="1"/>'.$meta_box_value.'</textarea><br />'; // echo'<p><label for="'.$meta_box['name'].'">'.$meta_box['description'].'</label></p>'; // echo'<p> </p>'; echo'<br />'; }elseif($meta_box['type']=='file'){ echo'<input type="hidden" name="'.$meta_box['name'].'_noncename" id="'.$meta_box['name'].'_noncename" value="'.wp_create_nonce( plugin_basename(__FILE__) ).'" />'; echo'<span style="font-weight: bold;">■'.$meta_box['title'].' </span>'.$meta_box['titlesub']; echo'<input type="file" name="'.$meta_box['name'].'" value="'.$meta_box_value.'" size="54" /><br />'; // echo'<p><label for="'.$meta_box['name'].'">'.$meta_box['description'].'</label></p>'; // echo'<p> </p>'; echo'<br />'; }elseif($meta_box['type']=='textarea'){ echo'<input type="hidden" name="'.$meta_box['name'].'_noncename" id="'.$meta_box['name'].'_noncename" value="'.wp_create_nonce( plugin_basename(__FILE__) ).'" />'; echo'<span style="font-weight: bold;">■'.$meta_box['title'].' </span>'.$meta_box['titlesub'].'<br/>'; echo'<textarea name="'.$meta_box['name'].'" cols="54" rows="5"/>'.$meta_box_value.'</textarea><br />'; // echo'<p><label for="'.$meta_box['name'].'">'.$meta_box['description'].'</label></p>'; // echo'<p> </p>'; echo'<br />'; }elseif($meta_box['type']=='checkbox'){ echo'<input type="hidden" name="'.$meta_box['name'].'_noncename" id="'.$meta_box['name'].'_noncename" value="'.wp_create_nonce( plugin_basename(__FILE__) ).'" />'; echo'<span style="font-weight: bold;">■'.$meta_box['title'].' </span>'.$meta_box['titlesub'].'<br />'; echo'<input type="checkbox" name="'.$meta_box['name'].'" value="checked" '.$meta_box_value.'>'.$meta_box['description'].'<br />'; // echo'<p> </p>'; echo'<br />'; } } } /* 設定 */ function create_entry_meta_box() { global $theme_name; if ( function_exists('add_meta_box') ){ add_meta_box( 'work-entry_meta-boxes', 'エントリーページカスタマイズ', 'entry_meta_boxes', 'post', 'normal', 'high' ); add_meta_box( 'work-entry_meta-boxes', 'エントリーページカスタマイズ', 'entry_meta_boxes', 'page', 'normal', 'high' ); } } /* 入力内容を保存 */ function entry_meta_save_postdata( $post_id ) { global $post, $entry_meta_boxes; foreach($entry_meta_boxes as $meta_box) { // Verify if ( !wp_verify_nonce( $_POST[$meta_box['name'].'_noncename'], plugin_basename(__FILE__) )) { return $post_id; } if ( 'page' == $_POST['post_type'] ) { if ( !current_user_can( 'edit_page', $post_id )) return $post_id; } else { if ( !current_user_can( 'edit_post', $post_id )) return $post_id; } $data = $_POST[$meta_box['name']]; if(get_post_meta($post_id, $meta_box['name']) == "") add_post_meta($post_id, $meta_box['name'], $data, true); elseif($data != get_post_meta($post_id, $meta_box['name'], true)) update_post_meta($post_id, $meta_box['name'], $data); elseif($data == "") delete_post_meta($post_id, $meta_box['name'], get_post_meta($post_id, $meta_box['name'], true)); } } add_action('admin_menu', 'create_entry_meta_box'); add_action('save_post', 'entry_meta_save_postdata'); /************** /APPEND YUZUMARU **************/ /************** APPEND YUZUMARU **************/ // 設定画面 add_action('admin_menu', 'entry_meta_add_pages'); // 上のフックに対するaction関数(細かいことを説明しているところ) //------------------------------------------------------------------------------ // 設定画面登録 //------------------------------------------------------------------------------ function entry_meta_add_pages() { // 設定メニュー(管理メニュー)下にサブメニューを追加: add_options_page( 'Plugin Title', // 1.Pluginの設定画面での見出し 'Select Name', // 2.WP設定メニューでの表示名 8, // 3.管理者権限(誰が触れるよ。基本8でOK) __FILE__, // 4.WP内でぶつからない名前。面倒なら__FILE__でOK.高度な使い方は後 'entry_meta_options_page' // 5.設定モジュール名 ); // 管理メニュー下にサブメニューを追加 add_management_page($entry_meta_sname, $entry_meta_pname, 8, $entry_meta_slagname, 'mt_manage_page'); } function entry_meta_options_page(){ //-------------------------------------------------------------------------- // 準備 //-------------------------------------------------------------------------- : //-------------------------------------------------------------------------- // put //-------------------------------------------------------------------------- if (isset($_POST['update_option'])) { update_option('entry_meta_value' ,$_POST["entry_meta_value"]); } //-------------------------------------------------------------------------- // get //-------------------------------------------------------------------------- $entry_meta_value= get_option('entry_meta_value'); : //-------------------------------------------------------------------------- // 表示前準備 //-------------------------------------------------------------------------- : //-------------------------------------------------------------------------- // 表示 //-------------------------------------------------------------------------- echo <<<EOD <form name="form" method="post" action=""> サイドボックスワンタッチ挿入データ<br /> <textarea name="entry_meta_value" cols="40" rows="5">$entry_meta_value</textarea> : <input type='submit' name='update_option' class='buttonprimary'> </form> EOD } /************** /APPEND YUZUMARU **************/
スポンサーリンク