web-dev-qa-db-fra.com

Shortcode pour supprimer le post du frontal

J'essaie de créer un code court pour supprimer le message que l'utilisateur publie à partir de l'extrémité avant de mon site.

J'ai essayé le code court ci-dessous mais je reçois toujours l'erreur "Le lien que vous avez suivi a expiré." Veuillez voir la capture d'écran de l'image ci-dessous.

  //Shortcode to delete post
    function delete_my_posts() {
        ob_start();

            $url = get_bloginfo('url');
     if (current_user_can('edit_post', $post->ID)){
       echo '<a class="delete-post" rel=”nofollow” href="';
       echo wp_nonce_url("$url/wp-admin/post.php?action=trash&post=$id", 'delete-post_' . $post->ID);
       echo '">Delete post</a>';
     }

       return ob_get_clean();    
    }
    add_shortcode( 'delete_me', 'delete_my_posts' );

Capture d'écran: https://imgur.com/a/PMB1uU4

Quelqu'un peut-il bien vouloir conseiller sur cette erreur?

Merci

1
Kendell Daniel

Voici la version reformatée de votre code. get_delete_post_link() est utilisé pour récupérer l'URL de suppression de message afin que nous n'ayons pas à nous soucier des trucs nonce. global $post est conservé pour éviter PHP remarquez qui est actuellement là dans votre code. Veuillez le vérifier.

function wpso_delete_my_posts() {
    global $post;
    ob_start();
    if ( current_user_can('delete_posts', $post->ID ) ) {
        echo '<a class="delete-post" rel="nofollow" href="' . esc_url( get_delete_post_link( $post->ID ) ) . '">Delete Post</a>';
    }
    return ob_get_clean();
}
add_shortcode( 'delete_me', 'wpso_delete_my_posts' );
1
Nilambar Sharma