2017-04-19 25 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" 
);