wp_trash_post() WP 2.9.0

Переміщує вказаний запис (пост) у кошик. Якщо кошик вимкнено, запис буде видалено назавжди.

При переміщенні запису в кошик їй встановлюється статус trash. У метаполі _wp_trash_meta_statusзберігається її попередній статус і в метаполі _wp_trash_meta_timeзаписується час переміщення до кошика. Також, всі коментарі запису набувають статусу post-trashed(у полі comment_approve ), а колишні статуси коментарів посту записуються в метаполі посту ‘ _wp_trash_meta_comments_status‘. Все це потрібне для відновлення запису з кошика.

Якщо при викликі цієї функції константа EMPTY_TRASH_DAYS=false, то керування повністю передається функції wp_delete_post() .

Завжди краще використовувати цю функцію замість wp_delete_post() . Втім, wp_delete_post() передає управління wp_trash_post() , якщо кошик включений і тип запису дорівнює post або page. Для будь-яких типів wp_delete_post() завжди видаляє запис.

Налаштування кошика у WordPress

За замовчуванням у WordPress кошик включений і записи в ньому зберігаються 30 днів, після чого видаляються назавжди. Вимикається вона шляхом встановлення (визначення) константи EMPTY_TRASH_DAYS=false. Визначати константу потрібно у файлі конфігурації wp-config.php :

define( 'EMPTY_TRASH_DAYS', false ); // кошик відключений
define( 'EMPTY_TRASH_DAYS', true ); // Кошик включений. За замовчуванням у WP
define( 'EMPTY_TRASH_DAYS', 30); // кошик включена і записи в ній зберігатимуться 30 днів, після чого будуть видалені.

Як вимкнути корзину для окремих типів записів дивіться в сатьє: Як вимкнути корзину в WordPress

Використовуйте wp_untrash_post() , коли потрібно програмно повернути запис із кошика.

Використовуйте wp_trash_comment() , коли потрібно помістити коментар до кошика.

Хуки з функції

Повертає

WP_Post|false|null. Масив даних запису (поста) чи false.

Використання

wp_trash_post($post_id);
$post_id
(число) (обов’язковий)
ID посту. За промовчанням передається значення глобальної змінної $post.

Приклади

0

#1 Перемістимо запис до кошика

Якщо кошик увімкнений, то перемістимо запис з ID=15 в кошик. Запис буде в кошику 30 днів, протягом яких ми можемо його відновити. Після закінчення 30 днів запис буде видалено повністю.

wp_trash_post(15);

нотатки

список змін

З версії 2.9.0Введено.

Код wp_trash_post() WP 6.0.2

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;
	}

	/**
	 * Filters whether a post trashing повинен таке place.
	 *
	 * @ Since 4.9.0
	 *
	 * @param bool|null $trash Whether to go forward with trashing.
	 * @param WP_Post $post Post об'єкт.
	 */
	$check = apply_filters( 'pre_trash_post', null, $post );

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

	/**
	 * Fires before a post is sent to the Trash.
	 *
	 * @ Since 3.3.0
	 *
	 * @param int $post_id Post ID.
	 */
	do_action( 'wp_trash_post', $post_id );

	add_post_meta( $post_id, '_wp_trash_meta_status', $post->post_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 );

	/**
	 * Fires after a post is sent to the Trash.
	 *
	 * @ Since 2.9.0
	 *
	 * @param int $post_id Post ID.
	 */
	do_action( 'trashed_post', $post_id );

	return $post;
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *