it-swarm.com.de

So blockieren Sie eine Kategorie für einen Benutzer und aktivieren die Kategorie für den Rest der Benutzer

Ich habe eine Website, auf der alle Kategorien für jedermann zugänglich sind, mit Ausnahme von zwei Kategorien, die durch ein Passwort geschützt sind: Schüler und Lehrer. Sie sind nur für bestimmte Benutzertypen wie folgt offen:

Die Kategorie "Schüler" steht einem Benutzer des Typs "Schüler" und einem Benutzer des Typs "Lehrer" offen.

Die Kategorie Lehrer steht einem Benutzer vom Typ Lehrer offen, aber nicht einem Benutzer vom Typ Schüler.

Wie implementiere ich das in Wordpress?

2
peroxide

Wir werden die Funktion my_force_login () verwenden, die die Benutzer zwingt, sich anzumelden, wenn sie auf eine bestimmte Kategorie drücken.

Wp-login.php

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

Nachdem diese Bedingung beendet ist, schreiben Sie diesen Teil

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

Schreiben Sie in die Bedingung den Benutzernamen, der in seine eigene Kategorie umgeleitet werden soll. Dies ist der gesperrte Benutzer, für den nur eine Kategorie geöffnet ist.

Die Domain, die in die Bedingung geschrieben wird, ist die Weiterleitungsadresse. Sie sollte die Kategorienummer enthalten.

functions.php

Fügen Sie die folgende Funktion hinzu:

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) enthält die Kategorienummern, bei denen wir eine Anmeldung erzwingen möchten, um den Benutzer am Zugriff zu hindern.
Der erste Teil der Funktion (Kategorie 2) ermöglicht es allen Benutzern, diese Kategorie mit Ausnahme eines Benutzers, in unserem Fall eines Studenten, einzugeben. Der zweite Teil der Funktion (Kategorie 4) ermöglicht jedem die Teilnahme, auch dem Schüler. user_login == "student" definiert den gesperrten Benutzernamen

1
peroxide