我们将使用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"
定义被阻止的用户名