save_post_(post_type)
Подія спрацьовує щоразу, коли запис зазначеного типу (пост, сторінка) створюється або оновлюється, у тому числі і при публікації через імпорт, xmlrpc або e-mail.
Це копія хука save_post , тільки тут (post_type)
можна вказати тип посту, для якого потрібно, щоб хук спрацьовував.
Використання
add_action( 'save_post_(post_type)', 'wp_kama_save_post_type_action', 10, 3); /** * Function for `save_post_(post_type)` action-hook. * * @param int $post_ID Post ID. * @param WP_Post $post Post об'єкт. * @param bool $update Whether this is existing post being updated. * * @return void */ function wp_kama_save_post_type_action( $post_ID, $post, $update ){ // action... }
-
$post_ID
(число) - ID запису, який оновлюється.
-
$post
(WP_Post) -
Об’єкт запису, який оновлюється. Об’єкт такий самий як зазвичай у глобальній змінній
$post . -
$update
(логічний) -
true – це оновлення запису.
false — додати новий запис.
Приклади
#1 Надсилання email при оновленні запису типу book
Цей приклад показує, як надсилати лист адміністратору сайту з повідомленням про оновлення щоразу, коли запис оновлюється.
add_action( 'save_post_book', 'my_project_updated_send_email'); function my_project_updated_send_email( $post_id ) { // Якщо це ревізія, то не надсилаємо листа if ( wp_is_post_revision( $post_id ) ){ return; } // Якщо статус запису відрізняється від "Опубліковано", то не надсилаємо листа if ( get_post($post_id)->post_status != 'publish' ){ return; } $post_title = get_the_title($post_id); $post_url = get_permalink( $post_id ); $subject = 'Запис було оновлено'; $message = "На вашому сайті наступний запис був оновлений:nn"; $message.=$post_title. ":". $post_url; // Відправляємо листа. wp_mail(get_option('admin_email'), $subject, $message); }
#2 Ще приклади
Ще приклади дивіться в описі події save_post .
список змін
З версії 3.7.0 | Введено. |
Де викликається хук
save_post_(post_type)
Де використовується хук у WordPress
wp-includes/default-filters.php 678
add_action( 'save_post_wp_template_part', 'wp_set_unique_slug_on_create_template_part');