我正在尝试创建一个简短的代码来删除用户在我的网站前端发布的帖子。
我已经尝试了下面的短代码,但我不断收到错误“您访问的链接已过期”请参见下面的图像截图。
//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有人能就这个错误提出建议吗?
谢谢
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\' );