Ho trovato un hook di WordPress chiamato " edit_form_after_title
" per aggiungere una casella di testo dopo il titolo.
Come posso usare questo hook per visualizzare l'estratto dopo il titolo durante la creazione di un nuovo post?
Ho trovato un hook di WordPress chiamato " edit_form_after_title
" per aggiungere una casella di testo dopo il titolo.
Come posso usare questo hook per visualizzare l'estratto dopo il titolo durante la creazione di un nuovo post?
Risposte:
Mi sono adattato da qui: /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' );
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');
In questo modo, puoi aggiungere esattamente una casella di estratto come preferisci. Ma è importante eliminare la scatola originale. In caso contrario, non sarà possibile salvare l'estratto nella nuova casella.
Questa risposta è simile a quella pubblicata da @OzzyCzech, ma è più universale e aggiunge un'intestazione alla casella dell'estratto. Un aspetto negativo di questo metodo è che non è possibile nascondere la casella di estratto tramite Opzioni schermo ... in tal caso, è necessario utilizzare la risposta di @ 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 );
}
}
meta_box
?