wake-up-neo.net

Wie melde ich Benutzer von einer eingeschränkten Seite ab, wenn Sie bereits auf einem anderen Gerät angemeldet sind?

Hoffe mir kann jemand helfen. Mein Kunde und ich sind bei diesem Projekt auf dem laufenden und ich kann anscheinend keine Lösung für dieses Problem finden.

Ich verwende derzeit WP Bouncer, um die Anzahl der in einem Benutzerkonto angemeldeten Geräte auf ein Gerät zu beschränken. Ich habe das Gruppen-Plugin eingerichtet, um auch bestimmte Seiten auf der Site einzuschränken.

Das Problem: Das Bouncer-Plugin WP meldet einen Benutzer auf einem Gerät ab, sobald sich ein anderes Gerät anmeldet. Der Benutzer muss jedoch zu einer anderen Seite wechseln, um festzustellen, ob er abgemeldet wurde. Dies schafft ein Problem für meinen Kunden. Sobald sich ein Benutzer auf einer eingeschränkten Seite eines Geräts befindet, kann er sich auf einem anderen Gerät anmelden und dieselbe eingeschränkte Seite anzeigen, sodass beide Geräte die Seite gleichzeitig anzeigen können. Gibt es eine Möglichkeit, regelmäßig zu überprüfen, ob ein Benutzer angemeldet ist? Ich möchte keine unbenutzten Plugins verwenden, da die eingeschränkten Seiten Videos und digitale Magazine enthalten. Jeder Rat wäre dankbar!

1
Christy

Ich würde AJAX verwenden, um zu überprüfen, ob der Benutzer angemeldet ist. Sie können setInterval verwenden, um alle 30 Sekunden (oder was auch immer) zu überprüfen.

Ich habe den folgenden Code getestet und er funktioniert. Erstellen Sie zunächst eine Datei in Ihrem Designverzeichnis mit dem Namen ajax.js und fügen Sie diesen Code ein:

(function ( $ ) {
    var check_user_is_logged_in = function(){
        $.ajax({
            type: 'POST',
            url: ajax_object.ajax_url,
            data: {action:'is_user_logged_in'},
            success:function(data) {
                if ( data == 'no' ) {
                    window.location.href = "http://mywebsite.com";
                }
            },
            error: function(errorThrown){
                console.log(errorThrown);
            }
        });
    };

    setInterval(function(){
        check_user_is_logged_in();
    }, 30000);
})( jQuery );

Ändern Sie im obigen Code "mywebsite.com" in die URL, zu der Sie abgemeldete Benutzer umleiten möchten. Sie können auch 30000 anpassen. Dies ist die Anzahl der Millisekunden, die zwischen den Überprüfungen gewartet werden soll.

Fügen Sie als Nächstes in der functions.php-Datei Ihres Themas den folgenden Code hinzu:

function na_check_user_logged_in() {
    // Simply check if the user is logged in or not and echo 'yes' or 'no'
    echo ( is_user_logged_in() ) ? 'yes' : 'no';
    wp_die();
}

function na_enqueue_scripts(){
    // Enqueue our ajax.js script
    wp_enqueue_script( 'na_ajax_example', get_stylesheet_directory_uri().'/ajax.js', 'jquery');

    // Reveal the ajax_url for our script     
    wp_localize_script( 'na_ajax_example', 'ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );
};

add_action( 'wp_ajax_is_user_logged_in', 'na_check_user_logged_in' );
add_action( 'wp_ajax_nopriv_is_user_logged_in', 'na_check_user_logged_in' );
add_action( 'wp_enqueue_scripts', 'na_enqueue_scripts' );

Im Moment wird dieser Code auf jeder Seite ausgeführt. Sie müssen die Funktion na_enqueue_scripts bearbeiten und eine Logik hinzufügen, damit das Skript nur auf den geschützten Seiten in die Warteschlange gestellt wird.

0
Nate Allen