web-dev-qa-db-ja.com

フロントエンド "復元"リンクを追加

私は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に行き、Restoreリンクが使用しているリンクを見ても、action = trashの代わりにaction = untrashを使用していることを除いて同じです。

リンクを削除する機能を反映した機能はないように思われるので、変数を使用して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>
2
Eckstein

上記のあなたのコメントから、私はあなたがパズルの_wpnonce部分に関する問題に遭遇していると思います。 /wp-admin/post.php のコードを見ると、untrash命令は有効なWordPressノンスをチェックしていて、取得できていないようです。

これはトリックをするかもしれません:

<?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() そしてaを得るために admin_url() を使います適切なwp-admin URL。

WP nonceについてさらに読む

4
Pat J