如何阻止一个用户的类别,并为其他用户启用该类别

时间:2011-06-30 作者:peroxide

我有一个网站,所有类别都对任何人开放,只有两个类别是受密码保护的:学生和教师。它们仅对特定类型的用户开放,如下所示:

“学生”类别对类型为“学生”的用户和类型为“教师”的用户开放。

教师类别对教师类型的用户开放,但不对学生类型的用户开放。

我如何在Wordpress中实现这一点?

1 个回复
SO网友:peroxide

我们将使用my\\u force\\u login()函数,当用户按下特定类别时,该函数将强制用户登录。

Wp-login.php

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

此条件结束后,编写此部分

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

在条件中写入需要重定向到自己类别的用户名,这是只为他打开了一个类别的被阻止用户。

写入条件中的域是重定向地址,其中应该包含类别号。

functions.php

添加以下功能:

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) 包含我们想要强制登录以阻止用户访问的类别号
功能的第一部分(类别2)允许所有用户进入该类别,但一个用户除外,在本例中为学生。功能的第二部分(类别4)允许所有人(包括学生)进入。user_login == "student"定义被阻止的用户名

结束

相关推荐

WP_DROPDOWN_Categories by Date?

有没有办法为wp\\U dropdown\\u categories或wp\\u list\\u categories或其他东西指定一个时间段。。。?我想创建一个归档页面,这样,如果您在2010年的归档中,您将只看到2010年使用的类别。我必须为此编写自定义函数吗?如果是,有什么建议从哪里开始?tnx提供任何类型的答案!顺致敬意,克里斯