web-dev-qa-db-fra.com

Rendre la page et les menus de Wordpress visibles uniquement pour les utilisateurs connectés, en vérifiant les variables de session

J'essaie de connecter les utilisateurs à Wordpress via une API d'une autre plate-forme. Par conséquent, j'utilise une fonction ajax pour appeler une API externe en envoyant les informations d'identification de l'utilisateur (nom d'utilisateur, mot de passe) et en récupérant les informations de l'utilisateur: (email, id , prénom...).

Ce dont j'ai besoin, c'est de connecter les utilisateurs mentionnés sur mon site wordpress, mais sans les enregistrer (les enregistrer) dans la base de données wordpress, je ne suis donc pas en mesure d'utiliser de "plug-in de rôle d'utilisateur" pour gérer la visibilité des pages/publications. .

Mon objectif est donc de: rendre les pages/publications et même les menus visibles uniquement pour les utilisateurs externes lorsqu’ils sont enregistrés sur mon site wordpress, mais sans les enregistrer dans la base de données.

Je pense que peut-être utiliser des sessions variables ou ma propre fonction check_user_login (), mais je ne sais pas comment y parvenir (où devrais-je valider certaines pages pour les rendre visibles uniquement pour les utilisateurs connectés?), Car même si Expérience en PHP, c'est ma première fois en utilisant Wordpress.

Je ne fais que demander des idées, c'est pourquoi je ne poste aucun code pour le moment.

Merci encore pour votre aide.

3
esneyderp

Je pense que le commentaire de @ Milo est correct. Vous souhaitez probablement utiliser des fonctions telles que current_user_can (), etc. Sinon, s'il ne s'agit que d'afficher un menu différent, vous pouvez créer un menu personnalisé pour les utilisateurs distants puis définir un cookie sur votre site wordpress (via un appel de l'API). et affichez un menu différent pour vos utilisateurs distants lors de l'authentification à distance.

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;       
            }
}

Vous pouvez ensuite utiliser quelque chose dans la même ligne pour déterminer si une page doit être visible ou non.

2
TomC