Verschieben Sie das Meta-Auszugsfeld in den obigen Inhaltseditor

11

Ich habe einen WordPress-Hook namens " edit_form_after_title" gefunden, um nach dem Titel ein Textfeld hinzuzufügen.

Wie kann ich diesen Hook verwenden, um den Auszug nach dem Titel anzuzeigen, während ich einen neuen Beitrag erstelle?

Abouasy
quelle

Antworten:

7

Es ist ganz einfach, zuerst die Registrierung postexcerptaufzuheben und dann eine weitere oben hinzuzufügen.

Hier ist mein Code

add_action(
  'admin_menu', function () {
    remove_meta_box('postexcerpt', 'post', 'normal');
  }, 999
);

add_action('edit_form_after_title', 'post_excerpt_meta_box');
OzzyCzech
quelle
1
Hey +1 dazu, aber wie adressierst du das Styling nach dem Entfernen des meta_box?
DᴀʀᴛʜVᴀᴅᴇʀ
6

Ich habe mich von hier aus angepasst: /wordpress//a/158485/373

/* -----------------------------------------
 * Put excerpt meta-box before editor
 * ----------------------------------------- */
function my_add_excerpt_meta_box( $post_type ) {
    if ( in_array( $post_type, array( 'post', 'page' ) ) ) {
         add_meta_box(
            'postexcerpt', __( 'Excerpt' ), 'post_excerpt_meta_box', $post_type, 'test', // change to something other then normal, advanced or side
            'high'
        );
    }
}
add_action( 'add_meta_boxes', 'my_add_excerpt_meta_box' );

function my_run_excerpt_meta_box() {
    # Get the globals:
    global $post, $wp_meta_boxes;

    # Output the "advanced" meta boxes:
    do_meta_boxes( get_current_screen(), 'test', $post );

}

add_action( 'edit_form_after_title', 'my_run_excerpt_meta_box' );

function my_remove_normal_excerpt() { /*this added on my own*/
    remove_meta_box( 'postexcerpt' , 'post' , 'normal' ); 
}
add_action( 'admin_menu' , 'my_remove_normal_excerpt' );
Lea Cohen
quelle
2
function jb_post_excerpt_meta_box($post) {
    remove_meta_box( 'postexcerpt' , $post->post_type , 'normal' );  ?>
    <div class="postbox" style="margin-bottom: 0;">
        <h3 class="hndle"><span>Excerpt</span></h3>
        <div class="inside">
             <label class="screen-reader-text" for="excerpt"><?php _e('Excerpt') ?></label>
             <textarea rows="1" cols="40" name="excerpt" id="excerpt">
                  <?php echo $post->post_excerpt; ?>
             </textarea>
        </div>
    </div>
<?php }

add_action('edit_form_after_title', 'my_post_excerpt_meta_box');

Auf diese Weise können Sie genau eine Auszugsbox hinzufügen, wie Sie möchten. Es ist jedoch wichtig, die Originalverpackung zu entfernen. Wenn nicht, können Sie den Auszug nicht in der neuen Box speichern.

Jørgen Rudolph Låker
quelle
1

Diese Antwort ähnelt der von @OzzyCzech geposteten, ist jedoch universeller und fügt dem Auszug einen Header hinzu. Ein Nachteil dieser Methode ist, dass Sie das Auszugsfeld nicht über die Bildschirmoptionen ausblenden können. In diesem Fall müssten Sie die Antwort von @ lea-cohen verwenden.

add_action( 'edit_form_after_title', 'move_excerpt_meta_box' );
function move_excerpt_meta_box( $post ) {
    if ( post_type_supports( $post->post_type, 'excerpt' ) ) {
        remove_meta_box( 'postexcerpt', $post->post_type, 'normal' ); ?>
        <h2 style="padding: 20px 0 0;">Excerpt</h2>
        <?php post_excerpt_meta_box( $post );
    }
}
David
quelle