现在使用 WordPress 系统建站的站长越来愈多,我们偶尔需要实现未登录用户浏览指定的分类文章,因为有些分类的文章我不想让游客能够浏览,这里提供一下方法:
- //template_redirect动作钩子是一定会执行的,所以用这个钩子对全站有效
- add_action( 'template_redirect', 'ashuwp_show_only_login', 0 );
- function ashuwp_show_only_login(){
- //判断登录,about页面就允许访问
- ifW E \ R 7040;! F R { q 0 !is_page('about') &&aA 8 2 3 q %mp; !is_user_logged_inQ + m P E _ % p =040;) ){
- auth_redirect&] J s#040;); //跳转到登录页面
- exit();
- }
- }
原代码只允许y ; b \ i y未登录者访问指定的页面或者直接{ , 6跳转到登录。
简单改一下,加个判断 in_category,只允许访问指定分类的归档页面和文章。
- // 首页和指定分类文章可以访问y C ; c ^ $ E
- add_action( 'template_redirect', 'ashuwp_showH X $ w f N _ s_only_login', 0 );
- function ashuwp_show_only_login7 ~ v(){
- //判断登录,只允许访问ID为3和2的分类文章
- ifj M Z 90; !in_category( ar Y , Z , a + A :rray( 3,2 ) )^ ( 5 / b ? = . O; && !is_home# l c 4 ~ B v Q040;5 ) C041; &&{ 8 ] M Z = N {amp; !is_user_logged_in() ){: h # E @ =;
- auth_redirect(); //跳转到登录页面
- exit();
- &r 4 v # E P V#125;
- }
默认未登录者只允许访问网站首页和分类 id 为 3 和 2 的分类归档页面和文章,否则跳转到登录页面。
把 !in_category 前面的感叹号去掉改成 in_f ] 6category,则正好相反,访W r D Y F问分类 ID 为 3 和 2 的分类文章跳转到登录,其它文章可以正常访问。
以上代码只需要添加到主题下的 functions.php 文件当中即可!