在制作wordpress模板时,有时会用到同一个文章需要分开录入内容,分别调用的情况,这个时候就需要给文章,再添加一个录入额外内容的编辑器。将下面的代码添加到functions.php中,就可以实现。
function wodepress_post_editor_meta_box() {
add_meta_box (
'wpkj-post-editor',
__('文章顶部内容', 'textdomain') ,
'wodepress_post_editor',
'post' // 需要显示编辑框的文章类型,与下文的两处 $_POST['post'] 对应
);
}
add_action('admin_init', 'wodepress_post_editor_meta_box');
//Displaying the meta box
function wodepress_post_editor($post) {
$content = get_post_meta($post->ID, 'wodepress_post_editor', true);
//This function adds the WYSIWYG Editor
wp_editor (
$content ,
'wodepress_post_editor',
array ( "media_buttons" => true )
);
}
//This function saves the data you put in the meta box
function wodepress_post_editor_save_postdata($post_id) {
if( isset( $_POST['wodepress_post_editor_nonce'] ) && isset( $_POST['post'] ) ) {
//Not save if the user hasn't submitted changes
if( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
return;
}
// Verifying whether input is coming from the proper form
if ( ! wp_verify_nonce ( $_POST['wodepress_post_editor_nonce'] ) ) {
return;
}
// Making sure the user has permission
if( 'post' == $_POST['post'] ) {
if( ! current_user_can( 'edit_post', $post_id ) ) {
return;
}
}
}
$content = get_post_meta($post_id, 'wodepress_post_editor', true);
// 如果编辑器中有内容或者之前有数据才保存
if( $content || !empty( $_POST['wodepress_post_editor'] ) ) {
$data = $_POST['wodepress_post_editor'];
update_post_meta($post_id, 'wodepress_post_editor', $data);
}
}
add_action('save_post', 'wodepress_post_editor_save_postdata');
添加完了后,在录入文章时,就可以显示出来。在此编辑器中录入内容,在需要的地方调用出来就可以。
<?php
global $post;
$content = get_post_meta( $post->ID, 'wodepress_post_editor', true ); // 获取字段内容
if( $content ) { // 如果有内容
echo $content; // 输出内容
}
?>