it-swarm.com.de

Wordpress-Seite und -Menüs nur für angemeldete Benutzer sichtbar machen und Sitzungsvariablen prüfen

Ich versuche, Benutzer in WordPress über eine API einer anderen Plattform anzumelden. Daher benutze ich eine Ajax-Funktion, um eine externe API aufzurufen, die die Benutzeranmeldeinformationen (Benutzername, Passwort) sendet und die Benutzerinformationen zurückgibt: (E-Mail, ID) , Name...).

Ich muss die genannten Benutzer auf meiner WordPress-Website anmelden, ohne sie jedoch in der WordPress-Datenbank zu speichern (zu registrieren). Daher kann ich kein Plugin für Benutzerrollen verwenden, um die Sichtbarkeit von Seiten/Posts zu verwalten .

Mein Ziel ist es also, Seiten/Beiträge und sogar Menüs nur für diese externen Benutzer sichtbar zu machen, wenn sie auf meiner WordPress-Site angemeldet sind, ohne sie jedoch in der Datenbank zu speichern.

Ich denke, dass ich möglicherweise variable Sitzungen oder meine eigene check_user_login () - Funktion verwende, aber ich bin nicht sicher, wie ich dies erreichen kann (wo soll ich bestimmte Seiten validieren, um sie nur für angemeldete Benutzer sichtbar zu machen?), Denn selbst wenn ich habe Erfahrung in PHP, es ist mein erstes Mal mit WordPress.

Ich frage nur nach Ideen, deshalb poste ich im Moment keinen Code.

Danke nochmal für deine Hilfe.

3
esneyderp

Ich denke, @ Milos Kommentar ist richtig. Möglicherweise möchten Sie Funktionen wie current_user_can () usw. verwenden. Alternativ können Sie, um nur ein anderes Menü anzuzeigen, ein benutzerdefiniertes Menü für Remotebenutzer erstellen und dann ein Cookie auf Ihrer WordPress-Site setzen (über einen Aufruf über die API). und zeigen Sie Ihren Remotebenutzern ein anderes Menü an, wenn Sie sich remote authentifizieren.

add_filter('wp_nav_menu_args', 'wpse_wp_nav_menu_args_filter');
function wpse_wp_nav_menu_args_filter($args = array()) {
   if ($_COOKIE["remoteuser"] == "loggedin") { // User is remotely authenticated
        // Setup Primary Menu
        if ( $args['theme_location'] == 'primary' ) {
            $args['menu'] = "remote_user_menu";
        } 
        return $args;           
    }   else {
        return $args;       
            }
}

Sie könnten dann etwas in die gleiche Richtung verwenden, um zu bestimmen, ob eine Seite sichtbar sein soll oder nicht.

2
TomC