Функция WP_TRASH_POST() в WordPress: параметры, примеры и хуки

## Функция WP_TRASH_POST() │ Версия WP 2.9.0

Функция WP_TRASH_POST() позволяет переместить запись или страницу в корзину. Если корзина отключена, пост или страница будут навсегда удалены.

### Хуки функции

- pre_trash_post
- wp_trash_post
- trashed_post

### Возврат

Функция возвращает:
- WP_Post (объект поста) при успешном выполнении.
- false или null в случае ошибки.

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

Вызывайте функцию следующим образом:

```php
wp_trash_post( $post_id );

Параметры

  • $post_id (int) — ID поста.
  • По умолчанию используется ID глобального $post, если значение EMPTY_TRASH_DAYS равно true.

Примеры

Перемещение поста в корзину

Если корзина включена, мы перемещаем пост с ID=15 в корзину. Пост останется в корзине 30 дней, после чего он будет полностью удалён WordPress.

$post_id = 15;
wp_trash_post( $post_id );

Если функция корзины отключена, будет вызвана функция wp_delete_post() для удаления поста.

Заметки

  • Для удаления поста используйте функцию wp_delete_post().

Изменения

  • Начало использования: с версии 2.9.0.

Код функции

Функция wp_trash_post() находится в файле wp-includes/post.php. Вот её код:

function wp_trash_post( $post_id = 0 ) {
if ( ! EMPTY_TRASH_DAYS ) {
return wp_delete_post( $post_id, true );
}

$post = get_post( $post_id );

if ( ! $post ) {
    return $post;
}

if ( 'trash' === $post->post_status ) {
    return false;
}

$previous_status = $post->post_status;

/**
 * Фильтр для проверки, нужно ли перемещать пост в корзину.
 *
 * @param bool|null $trash           Нужно ли продолжать перемещение в корзину.
 * @param WP_Post   $post            Объект поста.
 * @param string    $previous_status Статус поста, который будет перемещён.
 */
$check = apply_filters( 'pre_trash_post', null, $post, $previous_status );

if ( null !== $check ) {
    return $check;
}

/**
 * Действие перед перемещением поста в корзину.
 *
 * @param int    $post_id         ID поста.
 * @param string $previous_status Статус поста перед перемещением.
 */
do_action( 'wp_trash_post', $post_id, $previous_status );

add_post_meta( $post_id, '_wp_trash_meta_status', $previous_status );
add_post_meta( $post_id, '_wp_trash_meta_time', time() );

$post_updated = wp_update_post(
    array(
        'ID'          => $post_id,
        'post_status' => 'trash',
    )
);

if ( ! $post_updated ) {
    return false;
}

wp_trash_post_comments( $post_id );

/**
 * Действие после перемещения поста в корзину.
 *
 * @param int    $post_id         ID поста.
 * @param string $previous_status Статус поста перед перемещением в корзину.
 */
do_action( 'trashed_post', $post_id, $previous_status );

return $post;

}

Связанные функции

  • get_default_post_to_edit()
  • wp_delete_post()
  • wp_insert_post()
  • wp_publish_post()
  • wp_update_post()

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *