从前端删除帖子的快捷码

时间:2019-05-14 作者:Kendell Daniel

我正在尝试创建一个简短的代码来删除用户在我的网站前端发布的帖子。

我已经尝试了下面的短代码,但我不断收到错误“您访问的链接已过期”请参见下面的图像截图。

  //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\' );
屏幕截图:https://imgur.com/a/PMB1uU4

有人能就这个错误提出建议吗?

谢谢

1 个回复
SO网友:Nilambar Sharma

以下是代码的重新格式化版本。get_delete_post_link() 用于获取删除帖子的URL,这样我们就不必担心临时的东西了。global $post 保留以避免代码中当前存在的PHP通知。请检查一下。

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\' );

相关推荐

Do not parse shortcode in CPT

我有一个CPT,我不想在它的内容中解析shortcode(使用\\u content()函数)。我可以使用remove\\u filter删除短代码的默认过滤器。但我如何确定我只是为了我想要的CPT而删除过滤器?我有一个在页面中使用的快捷码[我的自定义快捷码]。此短代码使用WP\\U查询和输出CPT帖子。我不想在这篇CPT文章中分析短代码。我是否应该在短代码解析挂钩之前用虚拟内容更改短代码,并在之后替换回来?或者我应该在我的CPT输出之前删除短代码的默认过滤器,然后在我的CPT输出完成后再次添加短代码的默