save_post_(post_type)
Событие срабатывает всякий раз, когда запись указанного типа (пост, страница) создается или обновляется, в том числе и при публикации через импорт, xmlrpc или по email.
Это копия хука 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 object. * @param bool $update Whether this is an 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 = "На вашем сайте следующая запись была обновлена:\n\n"; $message .= $post_title . ": " . $post_url; // Отправляем письмо. wp_mail( get_option('admin_email'), $subject, $message ); }
#2 Еще примеры
Еще примеры смотрите в описании события save_post.
Список изменений
С версии 3.7.0 | Введена. |
Где вызывается хук
save_post_(post_type)
save_post_(post_type)
wp-includes/post.php 4704
do_action( "save_post_{$post->post_type}", $post_id, $post, $update );
wp-includes/post.php 4886
do_action( "save_post_{$post->post_type}", $post->ID, $post, true );
wp-includes/class-wp-customize-manager.php 3105
do_action( "save_post_{$post->post_type}", $post->ID, $post, true );
Где используется хук в WordPress
wp-includes/default-filters.php 690
add_action( 'save_post_wp_template_part', 'wp_set_unique_slug_on_create_template_part' );