save_post
Εκτελείται αφού δημιουργηθεί ή ενημερωθεί άρθρο οποιουδήποτε τύπου. Για αποθήκευση επιπλέον δεδομένων ή καθαρισμό cache όταν αλλάζει το περιεχόμενο.
Πότε εκτελείται
Το WordPress εκτελεί το save_post στο τέλος της wp_insert_post(), αφού το άρθρο γραφτεί στη βάση δεδομένων. Αυτό καλύπτει δημοσίευση και ενημέρωση από τον επεξεργαστή, Γρήγορη επεξεργασία, εισαγωγές και το REST API, αλλά και αναθεωρήσεις, αυτόματες αποθηκεύσεις και μεταφορά στα διαγραμμένα.
Αν η οθόνη επεξεργασίας έχει κλασικά meta boxes, ο επεξεργαστής μπλοκ τα αποθηκεύει με δεύτερο αίτημα, που εκτελεί ξανά το save_post.
Παράμετροι
$post_idint |
ID του άρθρου. |
|---|---|
$postWP_Post |
Το αντικείμενο του άρθρου. |
$updatebool |
Αν πρόκειται για ενημέρωση υπάρχοντος άρθρου. |
Παράδειγμα: Καταγραφή του τελευταίου χρήστη που επεξεργάστηκε ένα άρθρο
add_action( 'save_post', function ( $post_id, $post, $update ) {
if ( ! $update || wp_is_post_revision( $post_id ) || wp_is_post_autosave( $post_id ) ) {
return;
}
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
return;
}
if ( 'post' !== $post->post_type || ! current_user_can( 'edit_post', $post_id ) ) {
return;
}
update_post_meta( $post_id, '_my_last_editor', get_current_user_id() );
}, 10, 3 );
Καλό να ξέρετε
- Χρησιμοποιήστε το save_post_{post_type}, π.χ. save_post_page, για να εκτελείται μόνο για έναν τύπο άρθρου.
- Αν καλέσετε τη wp_update_post() μέσα σε αυτό το hook, το save_post εκτελείται ξανά. Αφαιρέστε πρώτα τη συνάρτησή σας, αλλιώς θα δημιουργήσετε ατέρμονο βρόχο.
- Όροι ταξινομιών και προσαρμοσμένα πεδία που στέλνονται μέσω REST API μπορεί να αποθηκευτούν μετά από αυτό το hook. Αν τα χρειάζεστε, χρησιμοποιήστε το wp_after_insert_post (WordPress 5.6 και νεότερο).