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


11

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

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

Réponses:


7

C'est simple, il suffit de désenregistrer la postexcerptboîte d'abord, puis d'en ajouter une 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');

1
Hé +1 là-dessus, mais comment abordez-vous le style après la suppression du meta_box?
DᴀʀᴛʜVᴀᴅᴇʀ

6

J'ai adapté d'ici: /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' );

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 façon, vous pouvez ajouter exactement une boîte d'extrait à votre guise. Mais il est important d'éliminer la boîte d'origine. Sinon, vous ne pourrez pas enregistrer l'extrait dans la nouvelle boîte.


1

Cette réponse est similaire à celle publiée par @OzzyCzech, mais elle est plus universelle et ajoute un en-tête à la boîte d'extrait. Un inconvénient de cette méthode est que vous ne pouvez pas masquer la boîte d'extrait via les options d'écran ... dans ce cas, vous devez 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 );
    }
}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.