get_delete_post_link()WP 2.9.0

Retrieves the delete posts link for post.

Can be used within the WordPress loop or outside of it, with any post type.

Hooks from the function

Return

String|null. The delete post link URL for the given post.

Usage

get_delete_post_link( $post, $deprecated, $force_delete );
$post(int|WP_Post)
Post ID or post object.
Default: global $post
$deprecated(string)
Not used.
Default: ''
$force_delete(true|false)
Whether to bypass Trash and force deletion.
Default: false

Examples

0

#1 Demo Sample

echo get_delete_post_link( 1 );

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

#2 Full link to delete the post:

echo '<a href="'. get_delete_post_link() .'">delete post</a>';
0

#3 Display the link only if the user has enough privilege for deletion:

if( current_user_can( 'delete_posts' ) ) {
	echo '<a href="'. get_delete_post_link( $post->ID) .'">Delete without restoring</a>';
}

Changelog

Since 2.9.0 Introduced.

get_delete_post_link() code WP 6.1.1

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