it-swarm.com.de

Bestellen Sie den Editor neu, damit er hinter der Meta-Box steht

Ich möchte Dinge in einem benutzerdefinierten Beitrag neu anordnen. Ich habe die Meta-Box und den Editor zusammenarbeiten lassen, aber derzeit befindet sich der Editor über der Meta-Box
und ich brauche es umgekehrt.

Dies ist der Code für meine 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
}

Ich habe versucht, den Editor zu entfernen und nach dieser Funktion erneut zu installieren
aber ich denke, das ist eine zu vereinfachende Lösung, da es nicht funktioniert.

Ich habe den Editor folgendermaßen entfernt:

/* 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' );

Fügen Sie es dann mit add_post_type_supports erneut hinzu.

Irgendwelche Vorschläge?

4
Sagive SEO

Dadurch kann der Post-Editor wie die anderen sortierbaren Postfächer verschoben werden.

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 }
6
Chris_O

Dies ist die einfachste Methode, die ich gefunden habe.

Setzen Sie beim Erstellen Ihrer Metabox einfach den Kontext auf "Erweitert". Rasten Sie dann den Haken edit_form_after_title ein - drucken Sie Ihre Meta-Boxen aus und entfernen Sie sie, damit sie nicht zweimal angezeigt werden.

// 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']);
});

Dank an Andrews Lösung hier .

2
Simon East

Diese Lösung aus WordPress.org-Foren funktionierte perfekt für mich und ohne JS. Ich habe es so geändert, dass es nur auf ein einzelnes CPT abzielt. Ersetzen Sie daher im folgenden Code {post-type} durch den Beitragstyp, auf den Sie abzielen möchten: post, page, my_custom_post_type usw. (Wenn dies verwirrend ist, lesen Sie den Link zu .org für diesen Standard Beispiel für Seite/Beitrag)

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);
}
2
jb510

Haben Sie versucht, $priority auf high zu setzen und den Kontext zu ändern?

Wenn dies nicht hilft - es gibt einen Hack, den Sie verwenden könnten - der darin besteht, den Editor IN eine Meta-Box zu VERSCHIEBEN und dann zu platzieren, wie Sie möchten.

1
krembo99