webentwicklung-frage-antwort-db.com.de

So positionieren Sie ein benutzerdefiniertes Feld vor dem Editor

Ich habe Advanced Custom Fields 4.0.1 installiert und einen neuen Field group erstellt, der ein einzelnes Feld mit dem Namen preamble enthält. Ich möchte dieses neue Feld vor dem Editor im Bearbeitungsbildschirm für Beiträge positionieren. Es scheint, dass alle benutzerdefinierten Felder immer nach den normalen Feldern eines Posts hinzugefügt werden.

Eine Lösung wäre nicht, die mit ACF erstellten benutzerdefinierten Felder zu löschen und normale benutzerdefinierte Felder zu verwenden.

4
Cyclonecode

Dies kann mit diesem Nice-Snippet und edit_form_after_title gelöst werden. Aber ich habe nicht getestet, was passiert, wenn mehr als eine Meta-Box existiert. Mit einem einzelnen ACF-Feld (position:normal, style:no-metabox) funktioniert Folgendes:

add_action( 'edit_form_after_title', 'pre_title_metabox_wpse_94530' );

function pre_title_metabox_wpse_94530() 
{
    global $post, $wp_meta_boxes;

    do_meta_boxes( get_current_screen(), 'normal', $post );

    unset( $wp_meta_boxes['post']['normal'] );
}

Und wenn es mit jQuery gelöst werden muss, passen Sie subtitle_text an Ihren Feldnamen an:

// Add hook to Edit and New post
foreach( array( 'post.php', 'post-new.php' ) as $hook )
    add_action( "admin_footer-$hook", 'move_acf_to_title_wpse_94530' );

function move_acf_to_title_wpse_94530()
{
    // Check post type
    if( 'post' != get_post_type() )
        return;

    ?>
    <script type="text/javascript">
        jQuery(document).ready( function($) 
        {
            $( '#acf-field-subtitle_text' ).css( 'width', '100%' );
            $( '#acf-subtitle_text' ). insertAfter( '#titlewrap' );
        });
    </script>
    <?php
}
5
brasofilo

Ich habe mich ein bisschen darum gekümmert. Ich habe mir die ACF-Quelle angesehen. Die einfachen Felder, die ACF verwendet, sind immer noch Meta-Boxen. ACF verwendet lediglich CSS, um sie wie allgemeinere Felder aussehen zu lassen. Sie werden weiterhin von WP (do_metaboxes action) als Meta-Boxen behandelt.

Um einfache Felder zu anderen Teilen des Bearbeitungsformulars hinzuzufügen, müssen Sie die entsprechenden Haken verwenden. Weitere Haken auf dem Bearbeitungsbildschirm :

add_action( 'edit_form_after_title', 'myprefix_edit_form_after_title' );
function myprefix_edit_form_after_title() {
    echo '<h2>This is edit_form_after_title!</h2>';
}

add_action( 'edit_form_after_editor', 'myprefix_edit_form_after_editor' );
function myprefix_edit_form_after_editor() {
    echo '<h2>This is edit_form_after_editor!</h2>';
}

add_action( 'edit_form_advanced', 'myprefix_edit_form_advanced' );
function myprefix_edit_form_advanced() {
    echo '<h2>This is ye olde edit_form_advanced!</h2>';
}
3
Dave Romsey