wp_insert_post

Срабатывает после сохранения записи
Хук WordPress
INT 2.0.0
WordPress Icon

Описание хука

Хук «wp_insert_post» срабатывает после сохранения записи. Он позволяет изменить или определить дополнительные действия, которые должны быть выполнены после сохранения записи.

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

do_action( 'wp_insert_post', int $post_id, WP_Post $post, bool $update )

Этот хук вызывается с тремя параметрами:

  • $post_id (int) — ID сохраненной записи.
  • $post (WP_Post) — Объект записи, содержащий все данные о сохраненной записи.
  • $update (bool) — Флаг, указывающий, является ли это обновлением существующей записи.
<?php
function my_custom_function( $post_id, $post, $update ) {
    // Проверяем, является ли запись обновлением
    if ( $update ) {
        // Действия, которые должны быть выполнены только при обновлении записи
        // ...
    } else {
        // Действия, которые должны быть выполнены только при создании новой записи
        // ...
    }
}
add_action( 'wp_insert_post', 'my_custom_function', 10, 3 );
?>

В этом примере мы создали функцию «my_custom_function», которая принимает три параметра: $post_id, $post и $update. Внутри функции мы проверяем значение $update, чтобы определить, является ли запись обновлением или новой записью. Затем мы можем выполнить различные действия в зависимости от этого условия.

Примеры использования

Создание нового поста


function my_custom_function( $post_id, $post, $update ) {
    // Проверяем, что это новый пост
    if ( ! $update ) {
        // Выводим сообщение о создании нового поста
        echo 'Пост создан!';
    }
}
add_action( 'wp_insert_post', 'my_custom_function', 10, 3 );

В этом примере мы создаем новую функцию с именем «my_custom_function», которая будет выполняться при срабатывании хука «wp_insert_post». Функция принимает три параметра: $post_id (ID поста), $post (объект поста) и $update (флаг, указывающий, обновляется ли существующий пост).

Внутри функции мы проверяем, является ли пост новым (проверяем значение $update). Если это новый пост, то выводим сообщение «Пост создан!».

Обновление существующего поста


function my_custom_function( $post_id, $post, $update ) {
    // Проверяем, что это обновление существующего поста
    if ( $update ) {
        // Выводим сообщение об обновлении поста
        echo 'Пост обновлен!';
    }
}
add_action( 'wp_insert_post', 'my_custom_function', 10, 3 );

В этом примере мы используем ту же функцию «my_custom_function», но на этот раз мы проверяем, является ли пост обновлением существующего поста (проверяем значение $update). Если это обновление, то выводим сообщение «Пост обновлен!».

Установка пользовательских полей


function my_custom_function( $post_id, $post, $update ) {
    // Устанавливаем значение пользовательского поля "my_custom_field"
    update_post_meta( $post_id, 'my_custom_field', 'Custom Field Value' );
}
add_action( 'wp_insert_post', 'my_custom_function', 10, 3 );

В этом примере мы используем функцию «update_post_meta» для установки значения пользовательского поля «my_custom_field» для поста с указанным $post_id. Значение поля устанавливается как «Custom Field Value».

Добавление метаданных к посту


function my_custom_function( $post_id, $post, $update ) {
    // Добавляем метаданные к посту
    add_post_meta( $post_id, 'my_meta_key', 'Meta Value' );
}
add_action( 'wp_insert_post', 'my_custom_function', 10, 3 );

В этом примере мы используем функцию «add_post_meta» для добавления метаданных с ключом «my_meta_key» и значением «Meta Value» к посту с указанным $post_id.

Изменение статуса поста


function my_custom_function( $post_id, $post, $update ) {
    // Изменяем статус поста на "draft"
    wp_update_post( array(
        'ID' => $post_id,
        'post_status' => 'draft'
    ) );
}
add_action( 'wp_insert_post', 'my_custom_function', 10, 3 );

В этом примере мы используем функцию «wp_update_post» для изменения статуса поста с указанным $post_id на «draft».

Вопросы и ответы

Как получить ID нового поста после его сохранения?

Для получения ID нового поста после его сохранения можно использовать хук wp_insert_post. Этот хук срабатывает после сохранения поста и передает в качестве параметра ID сохраненного поста.


add_action( 'wp_insert_post', 'my_insert_post_function', 10, 3 );
function my_insert_post_function( $post_id, $post, $update ) {
    // Ваш код для обработки ID нового поста
}

Как проверить, является ли пост новым или обновленным?

Для проверки, является ли пост новым или обновленным, можно использовать параметр $update, передаваемый в хук wp_insert_post. Если пост является новым, то значение параметра будет false, если пост обновляется, то значение параметра будет true.


add_action( 'wp_insert_post', 'my_insert_post_function', 10, 3 );
function my_insert_post_function( $post_id, $post, $update ) {
    if ( $update ) {
        // Пост обновляется
    } else {
        // Пост является новым
    }
}

Как изменить данные поста перед его сохранением?

Для изменения данных поста перед его сохранением можно использовать объект $post, передаваемый в хук wp_insert_post. В этом объекте содержатся все данные поста, которые можно изменить перед сохранением.


add_action( 'wp_insert_post', 'my_insert_post_function', 10, 3 );
function my_insert_post_function( $post_id, $post, $update ) {
    $post->post_title = 'Новый заголовок'; // Изменение заголовка поста
    $post->post_content = 'Новый контент'; // Изменение контента поста
}

Как добавить мета-данные к новому посту?

Для добавления мета-данных к новому посту после его сохранения можно использовать хук wp_insert_post. В этом хуке можно использовать функцию add_post_meta() для добавления мета-данных.


function add_meta_data( $post_id, $post, $update ) {
    if ( $update ) {
        add_post_meta( $post_id, 'meta_key', 'meta_value' );
    }
}
add_action( 'wp_insert_post', 'add_meta_data', 10, 3 );

Как проверить, был ли пост успешно сохранен?

Для проверки успешности сохранения поста можно использовать параметр $update в хуке wp_insert_post. Если пост был успешно сохранен, то значение параметра будет true.


function check_post_save( $post_id, $post, $update ) {
    if ( $update ) {
        echo 'Пост успешно сохранен.';
    } else {
        echo 'Пост не был сохранен.';
    }
}
add_action( 'wp_insert_post', 'check_post_save', 10, 3 );

Как отменить сохранение поста?

Для отмены сохранения поста можно использовать функцию wp_die() в хуке wp_insert_post. Эта функция прекратит выполнение скрипта и выведет сообщение об ошибке.


function cancel_post_save( $post_id, $post, $update ) {
    if ( $update ) {
        wp_die( 'Сохранение поста отменено.' );
    }
}
add_action( 'wp_insert_post', 'cancel_post_save', 10, 3 );

Как обновить пост без вызова хука wp_insert_post?

Для обновления поста без вызова хука wp_insert_post можно использовать функцию wp_update_post(). Эта функция позволяет обновить информацию о посте, не вызывая событие сохранения.

Пример использования функции wp_update_post():


$post_id = 123; // ID поста, который нужно обновить
// Получаем объект поста по его ID
$post = get_post($post_id);
// Обновляем информацию о посте
$post->post_title = 'Новый заголовок';
$post->post_content = 'Новый контент';
// Сохраняем изменения
wp_update_post($post);

Как добавить свою функцию после сохранения поста?

Для добавления своей функции после сохранения поста можно использовать хук save_post. Этот хук срабатывает после сохранения поста и передает в функцию параметры $post_id и $post.

Пример использования хука save_post:


// Функция, которая будет вызываться после сохранения поста
function my_custom_function($post_id, $post) {
    // Ваш код здесь
}
// Добавляем функцию в качестве обработчика хука
add_action('save_post', 'my_custom_function', 10, 2);

Как удалить пост после его сохранения?

Для удаления поста после его сохранения можно использовать хук save_post и функцию wp_delete_post(). В функцию wp_delete_post() передается ID поста, который нужно удалить.

Пример использования хука save_post и функции wp_delete_post():


// Функция, которая будет вызываться после сохранения поста
function delete_post_after_save($post_id, $post) {
    // Удаляем пост
    wp_delete_post($post_id);
}
// Добавляем функцию в качестве обработчика хука
add_action('save_post', 'delete_post_after_save', 10, 2);

Хук wp_insert_post позволяет выполнить дополнительные действия после сохранения поста в WordPress. С помощью функции wp_update_post() можно обновить пост без вызова этого хука. Хук save_post позволяет добавить свою функцию после сохранения поста, а функция wp_delete_post() позволяет удалить пост после его сохранения.

Связанные элементы

  • Функция wp_insert_post(): создает или обновляет запись в базе данных.
  • Функция wp_transition_post_status(): вызывает хуки при изменении статуса записи.
  • Функция wp_publish_post(): публикует запись, устанавливая ее статус в «опубликовано».
  • Функция wp_update_post(): обновляет существующую запись в базе данных.
  • Функция wp_trash_post(): перемещает запись в корзину.
  • Функция wp_delete_post(): удаляет запись из базы данных.
  • Функция wp_insert_attachment(): создает новое вложение (медиафайл).
  • Функция wp_insert_term(): создает новый термин таксономии (категорию, метку и т. д.).
  • Функция wp_insert_comment(): создает новый комментарий к записи.
  • Хук pre_insert_term: вызывается перед созданием нового термина таксономии.
Обсуждение