Add frontend "Restore" link

时间:2013-04-10 作者:Eckstein

我正在使用get_delete_posts_link($postid) 让用户从前端将帖子发送到垃圾箱。现在,我正在尝试为他们复制相同的功能,以“取消刷新”或恢复帖子。

get_delete_posts_link($postid) 似乎生成如下URL:http://mysite.com/wordpress/wp-admin/post.php?post=555&action=trash&_wpnonce=0d6fc30f3b

当我转到wp admin并查看恢复链接使用的链接时,它看起来是一样的,只是使用了action=untrash而不是action=trash。

由于似乎没有一个函数来镜像delete post link函数,我认为可能手动创建带有变量的URL并使用“untrash”操作就可以了,但它似乎不起作用,恢复也不起作用。

在前端放置“恢复”帖子链接的最佳方式是什么?

编辑:这是我正在使用的创建“还原”链接的标记(不起作用):

<?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>

1 个回复
最合适的回答,由SO网友:Pat J 整理而成

从您上面的评论来看,我相信您在_wpnonce 拼图的一部分。查看中的代码/wp-admin/post.php, 看来untrash 指令正在检查有效的WordPress nonce,但没有得到。

这可能会达到以下效果:

<?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; 
}
?>
它使用wp_create_nonce() 生成所需的nonce,以及admin_url() 得到一个合适的wp-admin URL。

Further reading on WP nonces

结束