WordPress как на ладони

save_post_(post_type)хук-событиеWP 3.7.0

Событие срабатывает всякий раз, когда запись указанного типа (пост, страница) создается или обновляется, в том числе и при публикации через импорт, 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 — это добавление новой записи.

Примеры

0

#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 );
}
0

#2 Еще примеры

Еще примеры смотрите в описании события save_post.

Список изменений

С версии 3.7.0 Введена.

Где вызывается хук

wp_insert_post()
save_post_(post_type)
wp_publish_post()
save_post_(post_type)
WP_Customize_Manager::trash_changeset_post()
save_post_(post_type)
wp-includes/post.php 4817
do_action( "save_post_{$post->post_type}", $post_id, $post, $update );
wp-includes/post.php 4999
do_action( "save_post_{$post->post_type}", $post->ID, $post, true );
wp-includes/class-wp-customize-manager.php 3110
do_action( "save_post_{$post->post_type}", $post->ID, $post, true );

Где используется хук в WordPress

wp-includes/default-filters.php 719
add_action( 'save_post_wp_template_part', 'wp_set_unique_slug_on_create_template_part' );
6 комментариев
    Войти