2017-04-19 62 views
0

我有一个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

虽然取消删除链接如下所示:
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; 

这给出了一个明显正确的链接,但是,当然,它不起作用,因为nonce不验证。

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

回答

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" 
);