Have you ever tried to add rich text area meta box in your post editing screen? Now the WordPress improved its wp_editor function & it is very easy to create new WYSIWYG meta box in WordPress admin screen.
wp_editor( $content, $editor_id, $settings = array() );
The parameter, $settings is an array of arguments. More details are available in WordPress Codex page.
Below you can find an example code snippet that add a new WYSIWYG meta box - Notes, in the post post type.
add_action( 'add_meta_boxes', 'post_note_meta_box_add' ); function post_note_meta_box_add() { // Add new meta box add_meta_box( '_post_note', 'Notes', 'render_post_note_meta_box', 'post', 'normal', 'default' ); } function render_post_note_meta_box() { global $post; // Get saved meta data $post_note_meta_content = get_post_meta($post->ID, '_post_note', TRUE); if (!$post_note_meta_content) $post_note_meta_content = ''; wp_nonce_field( 'post_note'.$post->ID, 'post_note_nonce'); // Render editor meta box wp_editor( $post_note_meta_content, 'post_note', array('textarea_rows' => '5')); } add_action( 'save_post', 'post_note_meta_box_save' ); function post_note_meta_box_save( $post_id ) { // Bail if we're doing an auto save if( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return; // if our nonce isn't there, or we can't verify it, bail if( !isset( $_POST['post_note_nonce'] ) || !wp_verify_nonce( $_POST['post_note_nonce'], 'post_note'.$post_id ) ) return; // if our current user can't edit this post, bail if( !current_user_can( 'edit_post' ) ) return; // Make sure our data is set before trying to save it if( isset( $_POST['post_note'] ) ) $result = update_post_meta( $post_id, '_post_note', $_POST['post_note'] ); }