WordPress3.5 エディタ付フィールドを投稿の編集に追加する
↑のサイト様を参考に、各投稿タイプによって、追加するエディタを変えられるようにしました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
<?php //edit_form_after_editor で追加 add_action( 'edit_form_after_editor', 'custom_editor_input' ); add_action( 'save_post', '_metabox_save' ); /* 投稿タイプ一個分に追加したいエディタ配列 */ function get_post_editor_array() { return array( array( 'name' => 'aaa', // 適当に名前づけ 'title' => '<h2>タイトル</h2>', 'content' => '何も記述されてないときの初期表示' ), array( 'name' => 'bbb', // 適当に名前づけ 'title' => '<h2>タイトル</h2>', 'content' => '', // 空っぽでも大丈夫 ), array( 'name' => 'ccc', // 適当に名前づけ 'title' => '<h2>タイトル</h2>', 'content' => '', ) ); } /* とあるカスタム投稿タイプ用に追加したいエディタ配列 */ function get_hoge_editor_array() { return array( array( 'name' => 'ddd', // 適当に名前づけ 'title' => '<h2>タイトル</h2>', 'content' => '何も記述されてないときの初期表示' ), ); } function custom_editor_input() { global $post; if (get_post_type( $GLOBALS['post'] ) == 'post') { // 普通の投稿タイプの時 $editor_array = get_hoge_editor_array(); } elseif (get_post_type( $GLOBALS['post'] ) == 'hoge') { // hogeというカスタム投稿タイプの時 $editor_array = get_post_editor_array(); } else { // そもそも投稿タイプじゃない時 return; } $args= array( 'teeny'=> false, 'quicktags'=> true ); foreach ($editor_array as $editor) { echo $editor['title']; echo '<input type="hidden" name="'. $editor['name']. '" id="'. $editor['name']. '" value="'.wp_create_nonce( plugin_basename(__FILE__) ).'" />'; if (!empty(get_post_meta($post->ID, '_'. $editor['name']. '_editor', true))) { $content = get_post_meta($post->ID,'_'. $editor['name']. '_editor',true); } else { $content = $editor['content']; } wp_editor( $content, $editor['name']. '_editor',$args ); } } function _metabox_save($post_id) { global $post; if (get_post_type( $GLOBALS['post'] ) == 'post') { // 通常投稿タイプ $editor_array = get_service_editor_array(); } elseif (get_post_type( $GLOBALS['post'] ) == 'hoge') { // とあるカスタム投稿タイプ $editor_array = get_scan_editor_array(); } else { return; } foreach ($editor_array as $editor) { $name = filter_input ( INPUT_POST , $editor['name'] ); if ( isset( $post->ID ) && !wp_verify_nonce( $name , plugin_basename(__FILE__) )) { return $post->ID; } if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return $post_id; $custom_css= filter_input ( INPUT_POST , $editor['name']. '_editor' ); if( isset( $custom_css ) && !is_null( $custom_css ) ) { update_post_meta($post_id, '_'. $editor['name']. '_editor', $custom_css); } } } |