我在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()
构建自己的系统,但是有更简单的方法吗?
答案 0 :(得分:0)
我发现了一个简单的方法,看看如何在Wordpress的核心中完成这项工作。
他们使用wp_nonce_url()
:
检索添加到URL查询的随机数的URL。返回的结果将被转义以供显示。
所以,
<?php
$post_id = $post->ID;
$restore_link = wp_nonce_url(
"post.php?action=untrash&post=$post_id",
"untrash-post_$post_id"
);