首页 > 杂记 > 正文

隐藏文章列表中的user_login

如果用户的 user_nicename 和 user_login 是一样的情况下:

作者文章链接使用 author_id 代替 user_nicename。

1
2
3
4
5
6
7
8
9
10
11
12
13
add_filter('author_link', function($link, $author_id, $author_nicename){
	$author	= get_userdata($author_id);
 
	if(sanitize_title($author->user_login) == $author_nicename){
		global $wp_rewrite;
 
		$link	= $wp_rewrite->get_author_permastruct();
		$link	= str_replace('%author%', $author_id, $link);
		$link	= home_url(user_trailingslashit($link));
	}
 
	return $link;
}, 10, 3);

原来的作者链接直接设置为 404 页面,防止用户名暴露。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
add_action('pre_get_posts',  function($wp_query) {
	if($wp_query->is_main_query() && $wp_query->is_author()){
		if($author_name = $wp_query->get('author_name')){
			$author_name	= sanitize_title_for_query($author_name);
			$author			= get_user_by('slug', $author_name);
 
			if($author){
				if(sanitize_title($author->user_login) == $author->user_nicename){
					$wp_query->set_404();
				}
			}else{
				if(is_numeric($author_name)){
					$wp_query->set('author_name', '');
					$wp_query->set('author', $author_name);
				}
			}
		}
	}
});

隐藏body_class中的user_login

1
2
3
4
5
6
7
8
9
10
11
12
13
add_filter('body_class', function($classes){
	if(is_author()){
		global $wp_query;
 
		$author	= $wp_query->get_queried_object();
 
		if(sanitize_title($author->user_login) == $author->user_nicename){
			$author_class	= 'author-'.sanitize_html_class($author->user_nicename, $author->ID);
			$classes		= array_diff($classes, [$author_class]);
		}
	}
	return $classes;
});

隐藏comment_class中的user_login

1
2
3
4
5
6
7
8
add_filter('comment_class', function ($classes){
	foreach($classes as $key => $class) {
		if(strstr($class, 'comment-author-')){
			unset($classes[$key]);
		}
	}
	return $classes;
});

隐藏登录错误提示信息

WordPress登录时,如果用户名不存在就会提示:未知用户名……类似的信息。如果密码不正确,就会提示:……密码不正确……类似的信息。这样其实,也暴露了用户的信息。为了安全,可以改成统一的错误提示信息。

1
2
3
4
5
6
7
8
9
10
add_filter('wp_login_errors', function($errors){
	$error_code	= $errors->get_error_code();
 
	if(in_array($error_code, ['invalid_username', 'invalid_email', 'incorrect_password'])){
		$errors->remove($error_code);
		$errors->add($error_code, '用户名或者密码错误。');
	}
 
	return $errors;
});

版权声明:部分文章、图片等内容为用户发布或互联网整理而来,仅供学习参考。如有侵犯您的版权,请联系我们,将立刻删除。