web-dev-qa-db-ja.com

リダイレクトを使用してsingle-custom.php上のリンクを削除する

カスタム投稿タイプの単一ページにユーザーの削除リンクを用意する必要があります。しかし、エントリが削除されると、ユーザーはこのページには何も表示されませんwordpressエラーが発生します(まだエントリサイトにいるので、/?deleted=1)。ユーザーを自分のサイトの別のページにリダイレクトするにはどうすればよいですか。

これは私が私の削除リンクを掲載している方法です:

if ( !current_user_can( 'delete_bkroadkill', $post->ID ) )
            return;

        $onclick =  "onclick=\"return confirm('Rly delete?');\"";
        $link = "<a " . $onclick. " href='" . wp_nonce_url( get_bloginfo('url') . "/wordpress/wp-admin/post.php?action=delete&amp;post=" . $post->ID, 'delete-post_' . $post->ID) . "'>" . 'Löschen' . "</a>";
        echo $before . $link . $after;

そして私はこの関数を私のsingle-bkroadkill.phpで呼ぶだけです。

  <?php wp_delete_post_link(); ?>

私はすでにこのフックを使って試してみました:

add_action('trashed_post','my_trashed_post_handler',10,1);
function my_trashed_post_handler($post_id) {
   if (!is_admin()) {
    wp_redirect('http://www.citizen-science.at/projekte/roadkill/ubersicht');
    exit;
   }
}

しかし、それはまったく効果がありませんでした。これは標準の投稿に対してのみ機能しますか?私は http://codex.wordpress.org/Plugin_API#Current_Hooks_For_Actions を除いて、フックのドキュメントを見つけることができませんでした。

とにかく、これを行うための適切な方法は何でしょうか。

1
4ndro1d

「静止している」ページではなく、ユーザーが実際にリンクに移動し、投稿が削除された後に返信されます。説明とコードの簡単な説明から、これはおそらくユーザーに返送される行です。

wp_redirect( add_query_arg('deleted', 1, $sendback) );

目的地はフィルタされているので wp_redirect()

$location = apply_filters( 'wp_redirect', $location, $status );

そして、あなたはその既製のdeletedマーカーを持っています、それはおそらくそれが通常の管理操作を妨げないようにいくつかのチェックを設計することで他の場所にユーザーをリダイレクトするのが簡単であるべきです。

2
Rarst