web-dev-qa-db-ja.com

バックエンドのユーザー削除後のリダイレクト

特定のページにをリダイレクトするにはどうすればよいですかユーザーの削除後に

デモンストレーションの目的で、ユーザー加入者削除時にダッシュボードにリダイレクトしたいとします。これは私がこれまでに試したことです。

function mod_redirect_subscriber_delete($user_id) {
  $user  = get_user_by('id', $user_id);
  $role   = $user->roles[0];
  if ($role == 'subscriber') {
    wp_redirect( admin_url('/index.php') );
    exit;
  }
}
add_action("delete_user", "mod_redirect_subscriber_delete");

上記のコードでダッシュボードにリダイレクトされましたが、ユーザーは削除されませんでした

私はdeleted_userも試しました。これでユーザーは削除されましたがリダイレクトされませんでした。

何か案は?

乾杯!

3
Giraldi

これもできます

function mod_redirect_subscriber_delete($user_id) {
  $user  = get_user_by('id', $user_id);
  $role   = $user->roles[0];
  if ($role == 'subscriber') {
    add_action("deleted_user", function(){
        wp_redirect( admin_url('/index.php') );
        exit;
    });
  }
}
add_action("delete_user", "mod_redirect_subscriber_delete");

PHP 5.3以降で使用可能な無名関数(クロージャ)。

利点:

  • delete_userの最初のフックを削除する必要はありません
  • wp_delete_user()を再実行する必要はありません
  • 我々は関数内でのユーザの役割を保持しているので、あなたはまだdeleted_userに引っ掛かるようになります、それで我々は我々のクロージャをif(conditional)ステートメントに置きます。
4
userabuser

a)delete_userフック:

これがひとつのアイデアです。

これをコードに追加してユーザーを削除します。

remove_action("delete_user", "mod_redirect_subscriber_delete");
wp_delete_user($user_id);

アクションコールバックを削除して、それが再び自分自身を呼び出さないようにします。

だからあなたのコードは次のようになります。

function mod_redirect_subscriber_delete($user_id) {
  $user  = get_user_by('id', $user_id);
  $role   = $user->roles[0];
  if ($role == 'subscriber') {

    // start extra:
    remove_action("delete_user", "mod_redirect_subscriber_delete");
    wp_delete_user($user_id);
    // end extra

    wp_redirect( admin_url('/index.php') );
    exit;
  }
}
add_action("delete_user", "mod_redirect_subscriber_delete");

b)deleted_userフック:

deleted_userフックはアクティブ化されていますafterユーザーは削除されましたが、beforedelete_userの場合のようにアクティブ化されていません。

つまり、ユーザーの役割は削除されているため、ユーザーの役割を確認できません。

あなたはこのようにそれを使用することができますが、すべてのユーザーのために:

function mod_redirect_subscriber_deleted($user_id) {
   wp_redirect( admin_url('/index.php') );
   exit();
}
add_action("deleted_user", "mod_redirect_subscriber_deleted");
1
birgire