<?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);
}
}
}