Вход на сайт

Просмотр новости

Найдите то, что Вас интересует

Хук-событие WordPress: wp_insert_post

Дата публикации: 20-09-2026 14:14:50

Срабатывает после сохранения новой или обновления существующей записи.

Основное содержимое страницы с новостью.

Срабатывает после сохранения новой или обновления существующей записи.

Вызывается после событий save_post_{$post_type} и save_post, но до wp_after_insert_post.

Событие не вызывается для вложений при сохранении через wp_insert_post().

Если нужно обрабатывать только определённый тип записи, используйте событие save_post_{$post_type}, например save_post_product.

wp_insert_post() очищает post_content, post_excerpt и post_content_filtered через wp_filter_post_kses(), если текущий пользователь не имеет возможности unfiltered_html. Заголовок дополнительно очищается через wp_filter_kses().

Это важно при запуске через WP-CLI, WP-Cron, неавторизованный REST-запрос или отдельный скрипт с подключённым wp-load.php. В таких случаях get_current_user_id() обычно возвращает 0, поэтому потенциально опасный HTML, включая <script>, <iframe> и запрещённые атрибуты, может быть удалён без предупреждения. Запись при этом успешно сохраняется, и функция не возвращает ошибку.

Перед сохранением установите пользователя с возможностью unfiltered_html, а затем восстановите исходного пользователя:

$original_user_id = get_current_user_id();

wp_set_current_user( 1 );

try {
	$post_id = wp_insert_post(
		[
			'post_title'   => 'Импортированная запись',
			'post_content' => $html_content,
			'post_status'  => 'publish',
		],
		true
	);
} finally {
	wp_set_current_user( $original_user_id );
}
Мультисайт

В мультисайте возможность unfiltered_html доступна только супер-админиам. Обычный администратор отдельного сайта её не имеет. Константа DISALLOW_UNFILTERED_HTML, установленная в true, запрещает эту возможность всем пользователям, включая администраторов и супер-админиов.

Использование
add_action( 'wp_insert_post', 'wp_kama_insert_post_action', 10, 3 );

/**
 * Function for `wp_insert_post` 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_insert_post_action( $post_id, $post, $update ){
	// action...
}
$post_id(int)
ID сохранённой записи.
$post(WP_Post)
Объект сохранённой записи.
$update(bool)
true, если существующая запись была обновлена. false, если создана новая запись.
Примеры#1 Выполнить действие после сохранения записи

Сохраним время обновления обычной записи в метаполе. Ревизии и автосохранения пропускаются.

add_action( 'wp_insert_post', 'wp_kama_after_insert_post', 10, 3 );

function wp_kama_after_insert_post( $post_id, $post, $update ) {
	if (
		'post' !== $post->post_type
		|| wp_is_post_revision( $post_id )
		|| wp_is_post_autosave( $post_id )
	) {
		return;
	}

	update_post_meta( $post_id, '_last_processed', time() );
}
#2 Обновить запись без рекурсивного вызова обработчика

Перед вызовом wp_update_post() временно отключим обработчик.

add_action( 'wp_insert_post', 'wp_kama_update_post_slug', 10, 3 );

function wp_kama_update_post_slug( $post_id, $post, $update ) {
	if ( ! $update || 'product' !== $post->post_type ) {
		return;
	}

	remove_action( 'wp_insert_post', 'wp_kama_update_post_slug', 10 );

	wp_update_post(
		[
			'ID'        => $post_id,
			'post_name' => sanitize_title( $post->post_title ),
		]
	);

	add_action( 'wp_insert_post', 'wp_kama_update_post_slug', 10, 3 );
}

Схожие новости

#Наименование новостиТональностьИнформативностьДата публикации
1Хук-событие WordPress: edit_post_(post_type)018.3322-09-2026
2Хук-событие WordPress: admin_init023.6820-09-2026
3Хук-событие WordPress: network_admin_edit_(action)021.1601-10-2026
4Хук-событие WordPress: in_widget_form016.2520-09-2026
5Хук-Фильтр WordPress: post_type_link021.1121-09-2026
6Хук-Фильтр WordPress: get_the_excerpt019.0922-09-2026
7Хук-событие WordPress: admin_head023.6820-09-2026
8Хук-событие WordPress: restrict_manage_posts012.422-09-2026
9Хук-Фильтр WordPress: wp_title018.3320-09-2026
10Хук-Фильтр WordPress: the_category019.0920-09-2026

Классификация: Пресс-релизы. Схожих патентов: 0. Схожих новостей: 10. Тональность: 0. Информативность: 19.09. Источник: wp-kama.ru.