Déplacer la méta-boîte de l'extrait vers l'éditeur de contenu ci-dessus

11

J'ai trouvé un hook WordPress appelé " edit_form_after_title "pour ajouter une zone de texte après le titre.

Comment utiliser ce hook pour afficher l'extrait après le titre lors de la création d'un nouveau message?

    
posée Abouasy 11.03.2014 - 09:29

4 réponses

7

C’est simple, il suffit de désenregistrer tout d'abord postexcerpt box puis d’en ajouter un autre en haut.

Voici mon code

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

add_action('edit_form_after_title', 'post_excerpt_meta_box');
    
réponse donnée OzzyCzech 19.06.2014 - 12:56
4

Je me suis adapté d'ici: enlace

/* -----------------------------------------
 * 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' );
    
réponse donnée Lea Cohen 20.11.2014 - 23:40
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');

De cette manière, vous pouvez ajouter exactement un extrait à votre guise. Mais il est important d'éliminer la boîte d'origine. Sinon, vous ne pourrez pas sauvegarder l'extrait dans la nouvelle boîte.

    
réponse donnée Jørgen Rudolph Låker 15.11.2014 - 11:43
0

Cette réponse est similaire à celle affichée par @OzzyCzech, mais elle est plus universelle et ajoute un en-tête à la zone de l'extrait. L’un des inconvénients de cette méthode est que vous ne pouvez pas masquer la boîte d’extrait via Options d’écran ... Dans ce cas, vous devrez utiliser la réponse de @ lea-cohen.

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 );
    }
}
    
réponse donnée David 27.02.2016 - 21:34

Lire d'autres questions sur les étiquettes