J'utilise get_delete_posts_link($postid)
pour permettre aux utilisateurs d'envoyer leurs publications dans la corbeille à partir de l'interface. Maintenant, j'essaie de reproduire la même fonctionnalité pour qu'ils puissent "supprimer" ou restaurer les publications.
get_delete_posts_link($postid)
semble générer une URL du type suivant: http://mysite.com/wordpress/wp-admin/post.php?post=555&action=trash&_wpnonce=0d6fc30f3b
Et lorsque je vais sur wp-admin et que je regarde quel lien le lien de restauration utilise, il semble être identique, SAUF qui utilise action = untrash au lieu de action = corbeille.
Puisqu'il ne semble pas y avoir de fonction les miroirs de la fonction delete post link, j'ai pensé que créer manuellement l'URL avec des variables et utiliser l'action "untrash" le ferait, mais cela ne semble pas fonctionner de cette façon, restaurer ne fonctionnera pas.
Quelle est la meilleure façon de mettre un lien pour "restaurer" un message sur le front-end?
EDIT: C’est le balisage que j’utilise pour créer le lien "restaurer" (ne fonctionne pas):
<?php
$untrashurl = get_bloginfo('wpurl') . '/wp-admin/post.php?post=' . $postid . '&action=untrash';
?>
<a class="db-post-link" href="<?php echo wp_nonce_url($untrashurl); ?>">Untrash</a>
De votre commentaire ci-dessus, je crois que vous rencontrez des problèmes avec la pièce du puzzle _wpnonce
. En regardant le code dans /wp-admin/post.php
, il apparaît que l'instruction untrash
recherche un nonce WordPress valide et n'en obtient pas.
Cela pourrait faire l'affaire:
<?php
function wpse_95348_undelete_post( $post_id ) {
// no post?
if( !$post_id || !is_numeric( $post_id ) ) {
return false;
}
$_wpnonce = wp_create_nonce( 'untrash-post_' . $post_id );
$url = admin_url( 'post.php?post=' . $post_id . '&action=untrash&_wpnonce=' . $_wpnonce );
return $url;
}
?>
Il utilise wp_create_nonce()
pour générer le nonce dont vous avez besoin et admin_url()
pour obtenir un URL correcte wp-admin
.