web-dev-qa-db-fra.com

Comment bloquer une catégorie d'un utilisateur et l'activer pour le reste des utilisateurs

J'ai un site dans lequel toutes les catégories sont ouvertes à tous, à l'exception de deux catégories protégées par mot de passe: les étudiants et les enseignants. Ils sont ouverts uniquement à des types d'utilisateurs spécifiques, comme suit:

La catégorie Étudiants est ouverte à un utilisateur de type étudiant et à un utilisateur de type enseignant.

La catégorie Enseignants est ouverte à un utilisateur de type enseignant, mais pas à un utilisateur de type étudiant.

Comment puis-je implémenter cela dans Wordpress?

2
peroxide

Nous allons utiliser la fonction my_force_login () qui obligera les utilisateurs à se connecter lorsqu'ils appuieront sur une catégorie spécifique.

Wp-login.php

if ( ( empty( $redirect_to ) || $redirect_to == 'wp-admin

Après la fin de cette condition, écrivez cette partie

if ($user_name == "student") { wp_safe_redirect("http://www.domain.co.il /?cat=4"); } else { wp_safe_redirect($redirect_to); }

Dans la condition, écrivez le nom d'utilisateur devant être redirigé vers sa propre catégorie. Il s'agit de l'utilisateur bloqué qui n'a qu'une seule catégorie ouverte pour lui.

Le domaine qui est écrit dans la condition est l'adresse de redirection, il devrait contenir le numéro de catégorie.

functions.php

Ajoutez la fonction suivante:

function my_force_login() {
global $post;

if (!is_single() && !is_category()) return;
                            global $current_user;
                            get_currentuserinfo();

            if( is_single() ) {
    $categories = wp_get_post_categories($post->ID);
                                            $catid = $categories[0];
                                            $cat = get_category($catid);
                                            $ids = array(2); // array of category IDs that force login to read

                            if(((in_array((int)$cat->cat_ID, $ids)|| (in_array((int)$cat->category_parent, $ids)))&& !is_user_logged_in()) || ((in_array((int)$cat->cat_ID, $ids)|| (in_array((int)$cat->category_parent, $ids))) && is_user_logged_in() && $current_user->user_login  == "student")) {
                            auth_redirect();
                            }
            }
if( is_category(2) ) {
     $cat_ID = get_query_var('cat');

                                            $ids = array(2); // array of category IDs that force login to read


                            if((in_array((int)$cat_ID, $ids) && !is_user_logged_in()) || (in_array((int)$cat_ID, $ids)  && is_user_logged_in() && $current_user->user_login  == "student")) {
                            auth_redirect();
                            }
            }

            if( is_single() ) {
    $categories = wp_get_post_categories($post->ID);

                                            $catid = $categories[0];
                                            $cat = get_category($catid);
                                            $ids = array(4);

}
                            get_currentuserinfo();
                            if((in_array((int)$cat->cat_ID, $ids)|| (in_array((int)$cat->category_parent, $ids)))&& !is_user_logged_in()) {
                            auth_redirect();
                            }
            }
if( is_category(4) ) {
     $cat_ID = get_query_var('cat');

                                            $ids = array(4); 

                            if ( in_array((int)$cat_ID, $ids)  && !is_user_logged_in()) {
                            auth_redirect();
                            }
            }
            }

array(4), is_category(4) contient les numéros de catégorie où nous aimerions forcer une connexion afin d'empêcher l'utilisateur d'accéder.
La première partie de la fonction (catégorie 2) permet à tous les utilisateurs de saisir cette catégorie sauf un utilisateur, étudiant dans notre cas. La deuxième partie de la fonction (catégorie 4) permet à tout le monde d'entrer y compris l'étudiant. user_login == "student" définit le nom d'utilisateur bloqué

1
peroxide