Utilizatorii sunt redirecționați către pagina principală în loc de wp-admin

30 apr. 2016, 21:27:26
Vizualizări: 44.8K
Voturi: 3

După migrarea site-ului meu WordPress, utilizatorii care nu sunt Administratori sunt redirecționați către pagina principală după autentificare. Pe site-ul vechi erau redirecționați către wp-admin. Administratorul este redirecționat către wp_admin așa cum ar trebui.

Vreau ca utilizatorii să fie redirecționați către wp-admin după autentificare.

Am modificat siteurl din baza de date (wp_options), de asemenea am adăugat acest filtru în fișierul meu functions.php:

function my_login_redirect( $redirect_to, $request, $user ) {
    // Returnează URL-ul panoului de administrare
    return admin_url();
}

add_filter( 'login_redirect', 'my_login_redirect', 10, 3 );

Orice ajutor vă rog? Mulțumesc și Paște Fericit!

1
Comentarii

De asemenea, puteți utiliza acest plugin. https://wordpress.org/plugins/role-based-redirect/

Yasar Yasar
25 iul. 2018 07:46:34
Toate răspunsurile la întrebare 4
0

Ura, am reușit! De fapt, tema mea avea o redirecționare ca aceasta în functions.php:

// Blochează accesul la /wp-admin pentru utilizatorii non-administratori.
function custom_blockusers_init() {
  if ( is_user_logged_in() && is_admin() && !current_user_can( 'administrator' ) ) {
    wp_redirect( home_url() );
    exit;
  }
}
add_action( 'init', 'custom_blockusers_init' ); // Legătură la 'init'

Tot ce trebuie să faci este să adaugi propria ta capabilitate de rol, de exemplu: !current_user_can( 'manage-reports' )

Acest lucru m-a ajutat foarte mult.

1 mai 2016 19:44:40
1

@Hello Lili are dreptate. Dar, ar trebui să verificăm și DOING_AJAX!

// Blochează accesul la /wp-admin pentru non-administratori.
function custom_blockusers_init() {
  if ( is_user_logged_in() && is_admin() && !current_user_can( 'administrator' ) && (defined( 'DOING_AJAX' ) && !DOING_AJAX) ) ) {
    wp_redirect( home_url() );
    exit;
  }
}
add_action( 'init', 'custom_blockusers_init' ); // Legare la hook-ul 'init'
22 iun. 2018 05:24:52
Comentarii

PS: Există o paranteză închisă în plus în răspunsul tău (la sfârșitul instrucțiunii if) M-a derutat câteva minute. Oricum, mulțumesc. Asta m-a ajutat (eu vreau să redirecționez non-administratorii către pagina principală)

MrVimes MrVimes
22 iul. 2021 15:29:27
0

Codul de mai jos funcționează conform așteptărilor. Acest cod restricționează utilizatorii non-administratori să acceseze wp-admin sau pagina de profil.

add_action( 'admin_init', 'redirect_non_admin_users' );
/**
 * Redirecționează utilizatorii non-administratori către pagina principală
 *
 * Această funcție este atașată la hook-ul de acțiune 'admin_init'.
 */
function redirect_non_admin_users() {
    if ( ! current_user_can( 'manage_options' ) && '/wp-admin/admin-ajax.php' != $_SERVER['PHP_SELF'] ) {
        wp_redirect( home_url() );
        exit;
    }
}
30 ian. 2019 09:48:57
1
-2

ULTIMA SOLUȚIE CARE FUNCȚIONEAZĂ Puteți dezactiva temporar redirecționarea din fișierul wp-login.php și apoi șterge toate pluginurile instalate sau actualizate recent.

  1. Dezactivați redirecționarea deschizând fișierul wp-login.php

2. Derulați în jos până la linia unde aveți codul "do_action( "login_form_{$action}" );" La mine era în jurul liniei 461

  1. Comentați acea linie de cod pentru a dezactiva redirecționarea

  2. Salvați fișierul. Acum veți putea vă autentifica folosind http://www.example.com/wp-login.php

  3. Dezactivați sau ștergeți toate pluginurile instalate recent, în special cele care gestionează funcționalități de control al accesului

  4. Ștergeți cookie-urile și cache-ul

19 dec. 2017 23:18:43
Comentarii

Este o practică foarte proastă să modifici fișierele de bază ale WordPress

Anton Lukin Anton Lukin
19 dec. 2017 23:33:26