เมื่อโพสต์ได้รับการปรับปรุงจะมีตะขอบางตัวที่ถูกเปิดใช้งาน:
'pre_post_update'
คือการดำเนินการก่อนที่การโพสต์จะได้รับการอัปเดตอาร์กิวเมนต์ที่ผ่านเป็น 2: $post_ID
และ$data
นั่นคืออาร์เรย์ของcolums ฐานข้อมูลอื่น ๆทั้งหมดของตารางโพสต์
'transition_post_status'
เป็นฮุกที่ใช้ในการอัพเดทและส่งผ่านอาร์กิวเมนต์ 3 รายการ: $ new_post_status $old_post_status
และ$post
(วัตถุ)
- จากนั้นจะมีการเปิดใช้ตะขอการเปลี่ยนแปลงอีก 2 รายการ แต่เป็นชื่อแบบไดนามิกหมายความว่าการดำเนินการที่มีประสิทธิภาพเริ่มขึ้นกับสถานะเก่าและโพสต์ใหม่
และ
"{$old_status}_to_{$new_status}"
"{$new_status}_{$post->post_type}"
ขั้นแรกให้ส่งผ่านเฉพาะวัตถุที่โพสต์เป็นอาร์กิวเมนต์ที่สองผ่านรหัสโพสต์และวัตถุที่โพสต์ ค้นหาเอกสารที่นี่
'edit_post'
อาร์กิวเมนต์ส่งผ่าน 2 ข้อ: $post_ID
และ$post
(วัตถุ)
'post_updated'
ผ่าน 3 อาร์กิวเมนต์: $post_ID
, $post_after
(วัตถุโพสต์หลังการอัพเดท), $post_before
(วัตถุโพสต์ก่อนการอัพเดท)
- ตะขอแบบไดนามิกอื่น:
"save_post_{$post->post_type}"
ที่ขึ้นอยู่กับประเภทโพสต์เช่นการโพสต์มาตรฐานคือ'save_post_post'
และสำหรับหน้าเว็บที่เป็น'save_post_page'
เบ็ดนี้ผ่าน 3 ข้อโต้แย้ง: $post_ID
, $post
(วัตถุ) และ$update
ที่เป็นแบบบูล (จริงหรือเท็จ) ที่เป็นจริงเมื่อคุณดำเนินการปรับปรุงใน ความจริงเบ็ดนี้ถูกไล่ออกเมื่อบันทึกโพสต์เป็นครั้งแรก
- '
save_post
'ที่ใช้ทั้งในการอัปเดตและการบันทึกครั้งแรกและส่งผ่านอาร์กิวเมนต์ 3 ตัวของ hook ก่อนหน้านี้
- '
save_post_{$post_type}
'ที่ถูกเปิดใช้งานทั้งในการอัปเดตและการบันทึกครั้งแรกและส่งผ่านอาร์กิวเมนต์ 2 ตัวแรกของ hook ก่อนหน้านี้
- ในที่สุดคุณก็มี'
wp_insert_post
'ที่ถูกเปิดใช้งานทั้งในการอัปเดตและการบันทึกครั้งแรกและส่งผ่านอาร์กิวเมนต์ 3 ตัวของ hooks 2 ตัวก่อนหน้า
hook เหล่านี้จะเริ่มทำงานทุกครั้งที่มีการอัปเดตโพสต์ทั้งผ่านหน้าผู้ดูแลระบบในแบ็กเอนด์และผ่านเมื่ออัปเดต "ด้วยตนเอง" โดยใช้wp_update_post
หรือwp_insert_post
ฟังก์ชั่น
เมื่อโพสต์ที่มีการปรับปรุงโดยใช้หน้าผู้ดูแลระบบมีตะขอเพิ่มเติมยิงตัวอย่างเป็นหรือ'update_post_redirect'
'post_updated_messages'
(ดูที่นี่และ คำตอบของ WPSE นี้สำหรับตัวอย่างการใช้งาน)
โปรดทราบว่าหากคุณต้องการใช้ประโยชน์จากอาร์กิวเมนต์ hooks บางตัวนั่นไม่ใช่ข้อแรกคุณต้องประกาศอย่างชัดเจนในการadd_action
โทร
เช่นหากคุณต้องการใช้'$update'
อาร์กิวเมนต์ (นั่นคืออันดับที่ 3) ของ'save_post'
hook คุณต้องเพิ่ม3
เป็น$accepted_args
param on add_action
( ดูเอกสาร ):
// if you don't add 3 as as 4th argument, this will not work as expected
add_action( 'save_post', 'my_save_post_function', 10, 3 );
function my_save_post_function( $post_ID, $post, $update ) {
$msg = 'Is this un update? ';
$msg .= $update ? 'Yes.' : 'No.';
wp_die( $msg );
}
ข้อสังเกตสุดท้ายเกี่ยวกับเวลา : คุณต้องแน่ใจว่าadd_action
มีการเรียกใช้ก่อนที่การกระทำจะเริ่มขึ้นมิฉะนั้นจะไม่ทำอะไรเลย
เช่นรหัสนี้:
wp_update_post( $post );
add_action( 'save_post', 'my_function', 10, 3 );
จะไม่ทำอะไรเลยเพราะมีการเพิ่มการกระทำหลังจากเบ็ดถูกไล่ออก ที่นี่ง่ายต่อการจดจำในรหัสโลกแห่งความจริงไม่ได้เป็นเช่นนั้นเสมอไป
save_post
นั้นพิมพ์ผิดที่นี่หรือว่าในรหัสเดิมของคุณ? นอกจากนี้ยังช่วยให้การแก้จุดบกพร่องขณะที่การพัฒนา