it-swarm.com.de

Wie positioniere ich die meta_box nach dem Titel auf dem Post-Edit-Bildschirm?

Ich zeige im Bildschirm "Beitrag bearbeiten" ein Div mit add_meta_box() an. Diese Funktion bietet sehr eingeschränkte Positionierungsmöglichkeiten über die Parameter "Priorität" und "Kontext", die für meine Anforderungen nicht ausreichen.

Ich muss in der Lage sein, das div unter dem Permalink, aber über der Schaltfläche Insert Media auf Edit Post anzuzeigen, insbesondere unter dem div "titlediv", über dem div "postdivrich".

Wie kann ich die Meta-Box auf dem Post-Edit-Bildschirm positionieren? Kann dies über jQuery erfolgen?

Hier ist eine teilweise funktionierende Lösung:

function admin_init(){
  add_meta_box("wd_meta", "WD Meta", "wd_meta", "post", "normal", "high");
}
add_action("admin_init", "admin_init");

function wd_meta() {
    global $post;
    $custom = get_post_custom($post->ID);
?>
<div id="wdMeta">
<p>Display a message here.</p>
</div> 

<script>
$('#wd_meta').insertAfter('#titlediv'); 
</script>
<?php } ?>

Das Meta-Feld wird auf der Seite korrekt angezeigt, aber das Javascript positioniert es nicht korrekt, obwohl es in der Demo zu funktionieren scheint:

http://jsfiddle.net/kFTc5/11/

6
AMcDermott

Sie können dazu keine echte Metabox verwenden, sondern sich in edit_form_after_title einbinden.

enter image description here

Hier ist ein einfaches Beispiel:

add_action( 'edit_form_after_title', 'wpse_87478_pseudo_metabox' );
add_action( 'save_post', 'wpse_87478_save_metabox' );

function wpse_87478_pseudo_metabox()
{
    global $post;
    $key = '_wpse_87478';

    if ( empty ( $post ) || 'post' !== get_post_type( $GLOBALS['post'] ) )
        return;

    if ( ! $content = get_post_meta( $post->ID, $key, TRUE ) )
        $content = '';

    printf(
        '<p><label for="%1$s_id">Enter some text
        <input type="text" name="%1$s" id="%1$s_id" value="%2$s" class="all-options" />
        </label></p>',
        $key,
        esc_attr( $content )
    );
}

function wpse_87478_save_metabox( $post_id )
{
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
        return;

    if ( ! current_user_can( 'edit_post', $post_id ) )
        return;

    $key = '_wpse_87478';

    if ( isset ( $_POST[ $key ] ) )
        return update_post_meta( $post_id, $key, $_POST[ $key ] );

    delete_post_meta( $post_id, $key );
}
9
fuxia