WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

before_delete_post хук-событие . WP 3.2

Срабатывает до того как запись (пост) будет удалена, в самом начале функции wp_delete_post().

Это событие срабатывает до того как, будут произведены какие либо действия над очисткой базы данных от поста: удаление метаданных, изменение родителя у вложений удаляемого поста

Этот хук-событие срабатывает только в том случае, если запись удаляется из корзины или если корзина отключена, т.е. когда запись удаляется безвозвратно.

Заметка

Хук не срабатывает, если удаляется вложение (прикрепленный файл, файл медиатеки). Чтобы производить действие при удалении вложения используйте хук delete_post - срабатывает прямо перед тем как сама запись будет удалена из базы данных. Если нужно что-то сделать после того, как запись удалена и удалены все её связи и метаданные, используйте хук deleted_post, но имейте ввиду что на этот момент записи в БД уже нет и данные удаленного поста можно получить только через хук, а не через get_post().

Использование

add_action( 'before_delete_post', 'action_function_name_6548', 10, 2 );
function action_function_name_6548( $postid, $post ) {
	// Действие...
}
$postid(число)
ID поста, который передается в функцию прикрепленную к событию.
$post(WP_Post) (WP 5.5)
Объект записи (поста).

Примеры

#1 Действие при удалении поста

Предположим мы пишем плагин и нам нужно что-то сделать в тот момент, когда удаляется произвольный тип записи "my_post_type":

add_action( 'before_delete_post', 'my_func' );
function my_func( $postid ){
	// Проверяем наш ли это тип записи удаляется

	$post = get_post( $postid );

	// если нет, выходим.
	if( ! $post || $post->post_type !== 'my_custom_post_type' ) 
		return;

	// Код который будет делать что нам нужно при удалении
}

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

С версии 3.2.0 Введена.
С версии 5.5.0 Added the $post parameter.

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

wp_delete_post()
before_delete_post
wp-includes/post.php 3026
do_action( 'before_delete_post', $postid, $post );

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

wp-includes/default-filters.php 488
add_action( 'before_delete_post', '_reset_front_page_settings_for_post' );
2 коммента