2015-05-11 3 views

Antwort

8

https://wordpress.org/support/topic/what-is-the-status-of-user_status

Das user_status Feld ist effektiv ein tot Datensatz in der Datenbank. Es ist seit einiger Zeit so.

Sie könnten sicherlich Gebrauch davon für eigene Zwecke zu machen, aber wie es ist eine Art veraltet oder unusued Element, es ist immer möglich, es wird von einer zukünftigen Version von Wordpress fallen gelassen werden. Oder sogar auf Arbeit zurückgesetzt werden.

Leider bietet WordPress keine nativen Online/Offline-Benutzerstatusmethoden. Sie müssen es selbst implementieren. Einige Ideen, wie es richtig zu implementieren, könnte in diesem Thema zu finden: https://wordpress.stackexchange.com/q/34429/44533

Eine weitere Option ist es, einige 3rd-Party-Plugin zu verwenden (ich jede nicht beraten können ...).

In meiner eigenen Lösung erstelle ich user_login benutzerdefinierte abgelegt in wp_usermeta Tabelle, Benutzerstatus zu überprüfen.

//Creating hooks for login/logout actions: 
add_action('clear_auth_cookie', array('WP_Plugin_Template','set_user_logged_out'), 10); 
add_action('wp_login', array('WP_Plugin_Template','set_user_logged_in'), 10, 2); 

//When hook is triggered, I'm using user_meta to update user status: 
function set_user_logged_in($user_login, $user) { 
    if(get_user_meta($user->ID, "logged_in", true) !== "true") 
    if(!update_user_meta($user->ID, 'logged_in', 'true')) 
    wp_die("Failed to add usermeta ", "Fatal"); 
} 
function set_user_logged_out() { 
    $user = wp_get_current_user(); 
    if(get_user_meta($user->ID, "logged_in", true) !== "false") 
    if(!update_user_meta($user->ID, 'logged_in', 'false')) 
    wp_die("Failed to add usermeta ", "Fatal"); 
} 

Ich hoffe, es hilft.

+0

Danke für Ihre Antwort. Wir sind in einem Openion wie usre-status-Feld nur die Benutzeraktivität entscheidet. Wenn wir einen Benutzer inaktivieren möchten, haben wir user_status = 2 festgelegt. Wenn dieses Feld nicht entscheidet, ob der Wetterbenutzer aktiv ist oder nicht, was ist dann das zuständige Feld? Bitte geben Sie Ihren Vorschlag an. –

+0

@chandrasekhar Meine Antwort aktualisiert – Samuel

+0

Vielen Dank für Ihre Antworten. Könnte ich meine Frage falsch gestellt haben. Meine Frage ist, wie man einen Benutzer von der Registrierung einschränkt. Wenn ich einen bestimmten Benutzer blockieren möchte, wie es geht. Bitte geben Sie Ihre Vorschläge an. –

3

Von anderen Threads sehe ich, dass user_status effektiv ein "totes" Feld ist. Es bleibt in der Tabelle wp_user, wird aber nicht mehr von WP selbst verwendet. Wahrscheinlich erklärt, warum wp_update_user es nicht berührt.

global $wpdb; 
$wpdb->query('UPDATE wp_users SET user_status = 1 WHERE ID = '.$current_user->ID); 

MEHR http://codex.wordpress.org/Class_Reference/wpdb

+0

Vielen Dank für Ihre Antworten. Könnte ich meine Frage falsch gestellt haben. Meine Frage ist, wie man einen Benutzer von der Registrierung einschränkt. Wenn ich einen bestimmten Benutzer blockieren möchte, wie es geht. Bitte geben Sie Ihre Vorschläge an. –

+0

ist sollte Benutzername oder Benutzerrolle sein (Rollenmittel wie Subscriber, Editer) – channasmcs

+0

durch den Benutzer einschränken. Nicht nach der Rolle. Ihre Vorschläge würden mir sehr helfen. –

1

Sie wahrscheinlich add_user_meta (WP Codex) und fügen Sie ein neues Feld an die Benutzer-Tabelle verwendet werden soll.

Scheint wie der sauberste Weg zu mir und Sie werden nicht überrascht sein, wenn user_status aus der Datenbank irgendwann in der Zukunft gelöscht wird.

+0

Vielen Dank für Ihre Antworten. Ich stimme dir zu. Bitte schlagen Sie mir vor, wie Sie einen Benutzer von der Registrierung blockieren können. Wir haben user_status = 2 bis jetzt gemacht, um einen Benutzer zu blockieren. –

+0

Sie können einen Haken bei 'wp_login' verwenden, um eine benutzerdefinierte Funktion beim Anmelden auszuführen. Diese Funktion könnte Ihr benutzerdefiniertes Benutzer-Meta-Feld überprüfen, das über eine Funktion gesetzt werden kann, die an 'user_register' angehängt ist (wird ausgeführt, wenn ein Benutzer erstellt wird) selbst ... – flomei

0

Ich könnte spät hier sein, aber der user_status ist nicht tot, wie es klingt, ist es mosty in Netzwerk/Multi-Site verwendet wird Benutzer als Spam zu markieren ;-)