get_delete_post_link()WP 2.9.0

Получает ссылку (URL) на удаление поста.

Может быть использована для перемещения поста в корзину, удаления страниц, постов, вложений и ревизий.

Если у пользователя не достаточно прав для удаления поста, вернет пустую строку.

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

Возвращает

Строку|null.

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

get_delete_post_link( $id, $deprecated, $force_delete );
$id(число) (обязательный)
ID записи.
$deprecated
Параметр запрещен с версии 3.0.
По умолчанию: ''
$force_delete(логический)
true — будет удалять запись мимо корзины.
По умолчанию: false

Примеры

0

#1 Пример работы get_delete_post_link():

echo get_delete_post_link( 1 );

// вернет: http://example.com/wp-admin/post.php?post=1&action=delete&_wpnonce=d21da8cad3
0

#2 Полная ссылка на удаление поста:

echo '<a href="'. get_delete_post_link() .'">удалить пост</a>';
0

#3 Выведем ссылку, только если у пользователя есть достаточные для удаления права:

if( current_user_can( 'delete_posts' ) ) {
	echo '<a href="'. get_delete_post_link( $post->ID) .'">Удалить без возможности восстановления</a>';
}

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

С версии 2.9.0 Введена.

Код get_delete_post_link() WP 6.4.3

function get_delete_post_link( $post = 0, $deprecated = '', $force_delete = false ) {
	if ( ! empty( $deprecated ) ) {
		_deprecated_argument( __FUNCTION__, '3.0.0' );
	}

	$post = get_post( $post );

	if ( ! $post ) {
		return;
	}

	$post_type_object = get_post_type_object( $post->post_type );

	if ( ! $post_type_object ) {
		return;
	}

	if ( ! current_user_can( 'delete_post', $post->ID ) ) {
		return;
	}

	$action = ( $force_delete || ! EMPTY_TRASH_DAYS ) ? 'delete' : 'trash';

	$delete_link = add_query_arg( 'action', $action, admin_url( sprintf( $post_type_object->_edit_link, $post->ID ) ) );

	/**
	 * Filters the post delete link.
	 *
	 * @since 2.9.0
	 *
	 * @param string $link         The delete link.
	 * @param int    $post_id      Post ID.
	 * @param bool   $force_delete Whether to bypass the Trash and force deletion. Default false.
	 */
	return apply_filters( 'get_delete_post_link', wp_nonce_url( $delete_link, "$action-post_{$post->ID}" ), $post->ID, $force_delete );
}