如何获取(或生成)链接来删除帖子?

时间:2017-04-19 08:53:26

标签: wordpress

我在Wordpress上有一个自定义管理页面,允许以某种必要的方式显示帖子。

每个帖子都表示为一张卡片,其中包含一个垃圾邮件图标,用于将帖子发送到垃圾箱。这很简单:

<?php $trash_link = get_delete_post_link( $id ); ?>
<a href="<?= $trash_link ?>"><span class="dashicons dashicons-trash"></span></a>

我想在我目前查看已删除的帖子时更换此图标/链接以进行还原,但我无法弄清楚如何获取该链接,因为它似乎不存在get_undelete_post_link()get_untrash_post_link()

垃圾链接看起来像:
http://example.com/wp-admin/post.php?post=8459&action=trash&_wpnonce=937a7ccb5d

虽然unrash链接看起来像:
http://example.com/wp-admin/post.php?post=8459&action=untrash&_wpnonce=53facd85e3

所以我试过了:

<?php
$trash_link = get_delete_post_link( $id );
if ( $post->post_status == 'trash' ):
    $restore_link = str_replace( 'trash', 'untrash', $trash_link );
endif;

这给出了一个明显正确的链接,但是,当然,由于现时无法验证,它无法正常工作。

我想我可以使用wp_create_nonce()wp_untrash_post()构建自己的系统,但是有更简单的方法吗?

1 个答案:

答案 0 :(得分:0)

我发现了一个简单的方法,看看如何在Wordpress的核心中完成这项工作。

他们使用wp_nonce_url()

  

检索添加到URL查询的随机数的URL。返回的结果将被转义以供显示。

所以,

<?php
$post_id = $post->ID;
$restore_link = wp_nonce_url(
    "post.php?action=untrash&amp;post=$post_id",
    "untrash-post_$post_id"
);