特定のページにをリダイレクトするにはどうすればよいですかユーザーの削除後に?
デモンストレーションの目的で、ユーザー加入者削除時にダッシュボードにリダイレクトしたいとします。これは私がこれまでに試したことです。
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
も試しました。これでユーザーは削除されましたがリダイレクトされませんでした。
何か案は?
乾杯!
これもできます
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)
ステートメントに置きます。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");
deleted_user
フック:deleted_user
フックはアクティブ化されていますafterユーザーは削除されましたが、beforeはdelete_user
の場合のようにアクティブ化されていません。
つまり、ユーザーの役割は削除されているため、ユーザーの役割を確認できません。
あなたはこのようにそれを使用することができますが、すべてのユーザーのために:
function mod_redirect_subscriber_deleted($user_id) {
wp_redirect( admin_url('/index.php') );
exit();
}
add_action("deleted_user", "mod_redirect_subscriber_deleted");