ฉันพบตะขอ WordPress ชื่อ " edit_form_after_title
" เพื่อเพิ่มกล่องข้อความหลังชื่อ
ฉันจะใช้ hook นี้เพื่อแสดงข้อความที่ตัดตอนมาหลังชื่อขณะสร้างโพสต์ใหม่ได้อย่างไร
ฉันพบตะขอ WordPress ชื่อ " edit_form_after_title
" เพื่อเพิ่มกล่องข้อความหลังชื่อ
ฉันจะใช้ hook นี้เพื่อแสดงข้อความที่ตัดตอนมาหลังชื่อขณะสร้างโพสต์ใหม่ได้อย่างไร
คำตอบ:
มันง่ายเพียงแค่ถอนการลงทะเบียนpostexcerpt
กล่องก่อนจากนั้นเพิ่มอีกหนึ่งกล่องที่ด้านบน
นี่คือรหัสของฉัน
add_action(
'admin_menu', function () {
remove_meta_box('postexcerpt', 'post', 'normal');
}, 999
);
add_action('edit_form_after_title', 'post_excerpt_meta_box');
ฉันดัดแปลงมาจากที่นี่: /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');
ด้วยวิธีนี้คุณสามารถเพิ่มกล่องข้อความที่ตัดตอนมาตามที่คุณต้องการ แต่มันเป็นสิ่งสำคัญที่จะกำจัดกล่องเดิม ถ้าไม่คุณจะไม่สามารถบันทึกข้อความที่ตัดตอนมาในกล่องใหม่
คำตอบนี้คล้ายกับ @OzzyCzech ที่โพสต์ แต่เป็นสากลมากขึ้นและเพิ่มส่วนหัวในกล่องข้อความที่ตัดตอนมา ข้อเสียอย่างหนึ่งของวิธีนี้คือคุณไม่สามารถซ่อนกล่องข้อความที่ตัดตอนมาจากตัวเลือกหน้าจอ ... ในกรณีนี้คุณต้องใช้คำตอบโดย @ 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
อย่างไร