Je veux réorganiser des choses dans un article personnalisé. J'ai eu la méta-boîte et l'éditeur travaillant ensemble, mais actuellement l'éditeur est au-dessus de la méta-boîte
et j'ai besoin que ce soit l'inverse.
C'est le code de ma meta box:
// adding the meta boxes
add_action("admin_init", "tl_admin_init");
function tl_admin_init(){
add_meta_box("testimonial_description-meta", __('Testimonial Description', 'sagive'), "testimonial_description", "testimonial", "normal", "core");
}
// getting, setting and displaying PROJECT DESCRIPTION meta box
function testimonial_description() {
global $post; // this is a must!
$custom = get_post_custom($post->ID); // this is a must!
$testimonial_description = $custom["testimonial_description"][0];
?>
<textarea name="testimonial_description" style="width: 98%; height: 10em; " /><?php echo $testimonial_description; ?></textarea>
<label><?php _e('Write a Simple 2 Line Description of your client testimonial without html for clean design.', 'sagive'); ?></label>
<?php
}
J'ai essayé de supprimer l'éditeur et de le réinstaller après cette fonction
mais j’imagine que c’est une solution trop simpliste car elle ne fonctionne pas.
J'ai enlevé l'éditeur en utilisant ceci:
/* This will help me get rid of the editor */
function tl_remove_pages_editor(){
remove_post_type_support( 'testimonial', 'editor' );
}
add_action( 'init', 'tl_remove_pages_editor' );
Puis l'ajouté à nouveau en utilisant add_post_type_supports
.
Des suggestions quelqu'un?
Cela permettra à l'éditeur de publication d'être déplacé comme les autres boîtes aux lettres pouvant être triées.
function move_posteditor( $hook ) {
if ( $hook == 'post.php' OR $hook == 'post-new.php' ) {
wp_enqueue_script( 'jquery' );
add_action('admin_print_footer_scripts', 'move_posteditor_scripts');
}
}
add_action( 'admin_enqueue_scripts', 'move_posteditor', 10, 1 );
function move_posteditor_scripts() {
?>
<script type="text/javascript">
jQuery('#postdiv, #postdivrich').prependTo('#your_meta_box_id .inside' );
</script>
<?php }
C'est la méthode la plus simple que j'ai trouvée.
Lors de la création de votre metabox, définissez simplement le contexte sur "avancé". Ensuite, accrochez-vous au crochet edit_form_after_title
- imprimez vos méta-boîtes là-bas, puis supprimez-les pour qu’elles ne s'affichent pas deux fois.
// Move all "advanced" metaboxes above the default editor
add_action('edit_form_after_title', function() {
global $post, $wp_meta_boxes;
do_meta_boxes(get_current_screen(), 'advanced', $post);
unset($wp_meta_boxes[get_post_type($post)]['advanced']);
});
Merci à la solution d'Andrew ici .
Cette solution de Forums WordPress.org a parfaitement fonctionné pour moi et sans JS. Je l'ai modifié pour ne cibler qu'un seul CPT. Dans le code ci-dessous, remplacez {post-type}
par le type de message que vous souhaitez cibler: post
, page
, my_custom_post_type
, etc. exemple page/post)
add_action( 'add_meta_boxes', 'jb_make_wp_editor_movable', 0 );
function jb_make_wp_editor_movable() {
global $_wp_post_type_features;
if (isset($_wp_post_type_features['{post-type}']['editor']) && $_wp_post_type_features['{post-type}']['editor']) {
unset($_wp_post_type_features['{post-type}']['editor']);
add_meta_box(
'description_sectionid',
__('Description'),
'jb_inner_custom_box',
'{post-type}', 'normal', 'high'
);
}
}
function jb_inner_custom_box( $post ) {
the_editor($post->post_content);
}
Avez-vous essayé de définir $priority
sur high
et de modifier le contexte?
Si cela ne vous aide pas - vous pouvez utiliser un hack - qui consiste à déplacer l'éditeur à l'intérieur d'une méta-boîte pour pouvoir la placer à votre guise.