2016-12-25 4 views
2

Ich möchte überprüfen, ob der aktuelle Benutzer Zugriff hat, um es zu lesen. dann öffne bestimmte Seite.Wie wird nach dem Login auf eine bestimmte Seite in WordPress umgeleitet?

In anderen Worten möchte ich nach dem Login auf eine bestimmte Seite in WordPress umleiten und anderen Benutzern den Zugriff darauf beschränken.

+0

Überprüfen Sie dies https://stackoverflow.com/questions/4267285/redirect-user-after-first-login-in-wordpress?rq=1 – EniGma

Antwort

2

Benutzerspezifische Inhalt ist ein großes Plugin, das glatt Sie einzelne oder Gruppen von Benutzern angeben können, von Rolle oder einen Benutzernamen, und ihnen den Zugang zu bestimmten Inhalten geben.

aktualisieren: Sie können Peter-Login Redirect definieren eine Reihe von Umadressierungsregel für bestimmte Benutzer, Benutzer mit bestimmten Rollen, Benutzer mit spezifischen Fähigkeiten und eine Decke Regel für alle anderen Benutzer verwenden. Legen Sie außerdem eine Weiterleitungs-URL für die Nachregistrierung fest.

2

According to This article

Umleiten Benutzer bei der ersten Anmeldung in Wordpress

auf Mitgliedschaft basierenden Wordpress-Websites und andere Websites, auf denen Sie eine besondere Begrüßungsnachricht oder Anweisungen, um neue Benutzer anzeigen möchten, können Sie einige implementieren benutzerdefinierte Login-Redirect-Funktionalität. Diese Funktionalität tritt nur einmal (oder für die ersten paar Logins) pro Benutzer ein.

Die wichtigen Elemente auf der Code-Seite für eine solche Funktionalität ist die Verwendung des integrierten WordPress "login_redirect" -Filters und die Speicherung von Informationen darüber, ob der Benutzer die "erste Anmeldung" erhalten hat oder nicht. Es gibt mehrere mögliche Ansätze, um die Informationen zu speichern, entweder in einem Cookie oder in den Meta-Informationen des Benutzers (gespeichert in der WordPress-Datenbank in der Tabelle "wp_usermeta").

Hier einige Beispiel-Code, den Sie in Ihrem Thema der functions.php-Datei oder in einem Plugin verwenden:

Cookie-basierte Lösung

// Send new users to a special page 
function redirectOnFirstLogin($redirect_to, $requested_redirect_to, $user) 
{ 
    // URL to redirect to 
    $redirect_url = 'http://yoursite.com/firstloginpage'; 
    // How many times to redirect the user 
    $num_redirects = 1; 
    // Cookie-based solution: captures users who registered within the last n hours 
    // The reason to set it as "last n hours" is so that if a user clears their cookies or logs in with a different browser, 
    // they don't get this same redirect treatment long after they're already a registered user 
    // 172800 seconds = 48 hours 
    $message_period = 172800; 

    // If they're on the login page, don't do anything 
    if(!isset($user->user_login)) 
    { 
     return $redirect_to; 
    } 

    $key_name = 'redirect_on_first_login_' . $user->ID; 

    if(strtotime($user->user_registered) > (time() - $message_period) 
     && (!isset($_COOKIE[$key_name]) || intval($_COOKIE[$key_name]) < $num_redirects) 
    ) 
    { 
     if(isset($_COOKIE[$key_name])) 
     { 
      $num_redirects = intval($_COOKIE[$key_name]) + 1; 
     } 
     setcookie($key_name, $num_redirects, time() + $message_period, COOKIEPATH, COOKIE_DOMAIN); 
     return $redirect_url; 
    } 
    else 
    { 
     return $redirect_to; 
    } 
} 

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

Download the cookie-based redirect on first login plugin

Benutzermetatabelle basierte Lösung

// Send new users to a special page 
function redirectOnFirstLogin($redirect_to, $requested_redirect_to, $user) 
{ 
    // URL to redirect to 
    $redirect_url = 'http://yoursite.com/firstloginpage'; 
    // How many times to redirect the user 
    $num_redirects = 1; 
    // If implementing this on an existing site, this is here so that existing users don't suddenly get the "first login" treatment 
    // On a new site, you might remove this setting and the associated check 
    // Alternative approach: run a script to assign the "already redirected" property to all existing users 
    // Alternative approach: use a date-based check so that all registered users before a certain date are ignored 
    // 172800 seconds = 48 hours 
    $message_period = 172800; 

    // If they're on the login page, don't do anything 
    if(!isset($user->user_login)) 
    { 
     return $redirect_to; 
    } 

    $key_name = 'redirect_on_first_login'; 
    // Third parameter ensures that the result is a string 
    $current_redirect_value = get_user_meta($user->ID, $key_name, true); 
    if(strtotime($user->user_registered) > (time() - $message_period) 
     && ('' == $current_redirect_value || intval($current_redirect_value) < $num_redirects) 
    ) 
    { 
     if('' != $current_redirect_value) 
     { 
      $num_redirects = intval($current_redirect_value) + 1; 
     } 
     update_user_meta($user->ID, $key_name, $num_redirects); 
     return $redirect_url; 
    } 
    else 
    { 
     return $redirect_to; 
    } 
} 

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

Download the user-meta based redirect on first login plugin

+1

Vielen Dank für Ihre Hilfe, ich schätze es wirklich. Wie kann ich dem Benutzer in Management eine Seite zuweisen? –

+1

Ich möchte private Seiten für jeden Benutzer erstellen. Der Inhalt dieser Seite ist im Frontend nur für den Besitzer der Seite zugänglich, nachdem er sich eingeloggt hat. –

+0

Es ist besser, Plugins zu verwenden, als Sie es selbst tun. Überprüfen Sie diesen Link aus https://wwload.com/specify-users-name-role-show-exclusive-content/ – EniGma

Verwandte Themen