เบ็ดการดำเนินการsave_post
เรียกว่าเมื่อบันทึก แต่ฉันไม่ทราบว่าคุณสามารถเพิ่มข้อมูลเมตาในเวลานี้ แต่มันควรจะเป็นไปได้ในการสร้าง / updated_post_meta
ปรับปรุงข้อมูลเมตาของคุณหลังจากที่โพสต์ได้รับการบันทึกไว้กับตะขอกระทำ
แก้ไข
ในการเลือกเมตาบางฟิลด์ (ฟิลด์ที่กำหนดเอง) ไว้ล่วงหน้าบนหน้าจอการสร้างโพสต์คุณต้องเพิ่มค่าเมตาเหล่านี้ก่อนด้วยค่าที่ว่างเปล่า
หากคุณดูที่post_custom_meta_box()
ฟังก์ชั่น (ซึ่งเป็นการเรียกกลับสำหรับ metabox ที่ใช้postcustom
) ในไฟล์wp-admin/includes/meta-boxes.php
คุณจะเห็นว่าฟังก์ชันกำลังใช้list_meta()
เพื่อสร้างเขตข้อมูลเมตาที่เลือกไว้ล่วงหน้า
ตอนนี้ให้ดูที่การไหลของโปรแกรมจนกระทั่งเมตาโบอกซ์นี้ปรากฏขึ้น (เรากำลังมองหา action action / filter hook ที่เราสามารถใช้ได้ที่นี่):
- WordPress โหลดไฟล์
post-new.php
- ไฟล์นี้จะสร้างโพสต์เริ่มต้นในฐานข้อมูลในบรรทัดที่มีฟังก์ชั่น
39
get_default_post_to_edit()
นั่นเป็นสิ่งที่ดี โดยทั่วไปโพสต์อยู่ในฐานข้อมูลเป็นแบบร่างอัตโนมัติแล้ว น่าเสียดายที่ตอนนี้ยังไม่มีการแก้ไขข้อมูลหรือเพิ่มสิ่งใหม่ ๆ
- ในขั้นตอนต่อไปไฟล์
edit-form-advaned.php
จะถูกรวมไว้ ไฟล์นี้จะสร้างหน้าผู้ดูแลระบบของหลุมและรวมถึงสารที่จำเป็นทั้งหมดตามsupports
พารามิเตอร์ของประเภทโพสต์
- ในบรรทัด
136
metabox ฟิลด์ที่กำหนดเองpostcustom
รวมอยู่และฟังก์ชั่นดังกล่าวเรียกว่า อีกครั้งไม่มีแอคชั่นฮุคที่เราสามารถใช้ได้
ข้อสรุป
ฉันคิดว่าวิธีเดียวที่คุณสามารถทำได้คือใช้ jQuery หรือpostcustom
เมตาโบท็อกซ์เกินพิกัดและเพิ่มค่าเมตาก่อนที่จะเรียกใช้list_meta()
ฟังก์ชัน
เช่น
add_action('admin_menu', 'wpse29358_replaceMetaBoxes'); // maybe add_meta_boxes hook
function wpse29358_replaceMetaBoxes() {
remove_meta_box('postcustom', {POST_TYPE}, 'normal');
add_meta_box('postcustom', __('Custom Fields'), 'wpse29358_postcustomMetabox', {POST_TYPE}, 'normal', 'core');
}
function wpse29358_postcustomMetabox($post) {
// Add your meta data to the post with the ID $post->ID
add_post_meta($post->ID, 'key', 'value');
// and then copy&past the metabox content from the function post_custom_meta_box()
}