Cette fonction est très utile si vous permettez à vos auteurs, contributeurs ou utilisateurs la possibilité de supprimer un post depuis le front de votre site.

Le front étant la partie du site « publique », donc pas l’interface d’administration.

Le problème est qu’en utilisant la fonction native get_delete_post_link, vous allez bien pouvoir autoriser la suppression du post, mais une fois ce dernier supprimé, l‘utilisateur se retrouvera sur une 404 car le post ne sera bien évidemment plus là…

La solution est donc de hooker la fonction de suppression en lui disant que si on est pas sur l’interface d’administration du site, alors il faut rediriger l’utilisateur vers la page d’accueil.

Vous pouvez bien évidemment créer une page dédiée pour afficher un message de type « Le contenu a bien été supprimé » plutôt que de rediriger vers la home de votre site.

 

Attention!

EDIT suite au commentaire de @Julio Potier

La solution proposée ci-dessus n’est pas la bonne pour les raisons évoquées dans le commentaire de Julio. Il y a des risques de conflits avec des plugins notamment.

Voici donc le code qu’il a gentiment rédigé et mis à notre disposition (merci à lui)

add_filter( 'wp_redirect', 'baw_hack_delete_post_redirect' );
function baw_hack_delete_post_redirect( $url ) {
	$ref = wp_get_referer();
	if ( strpos( $ref, admin_url() ) === false 
		&& isset( $_GET['action'], $_GET['post'] ) 
		&& ( ( 'delete' == $_GET['action'] && check_admin_referer('delete-post_' . $_GET['post'] ) )
			|| ( 'trash' == $_GET['action'] && check_admin_referer('trash-post_' . $_GET['post'] ) )
			)
	) {
		return home_url();
	}
	return $url;
}

 

Brice Capobianco

Autodidacte passionné par WordPress. J'aime apprendre et créer pour ensuite partager…
Responsable commercial en agence web, je suis également développeur freelance WordPress à Rennes.

Coorganisateur des Meetups WordPress Rennes et fondateur de b-website.com.