背景
当前有这样的一个需求,要实现让客户能够自助登录系统查询一些个人的信息,市面上没有特别符合我的需求的产品,经过一段时间的研究,想出了一个用wordpress实现简易信息查询系统,有三种方式,对应着不同阶段的需求和不同的实现难度。
方式一:使用网页密码
原理:wordpress可以设置给某个页面设置密码
优点:简单快速
缺点:无登录功能,用户无法自行修改密码,无法实现账户管理
1、安装wordpress
可以是使用海外共享空间或者vps来安装,因为可以做到免备案。安装方法在网上非常多,这里就不再赘述了
2、修改固定链接结构为文章名
3、新建一篇文章,设置好文章名链接地址和密码
我们可以使用用户id作为链接后缀,例如张三,我就以/zhangsan作为链接地址,可以简单理解为这就是客户识别码了
需要注意的是,如果文章中要加入其他文章的超链接的话,其他文章也需要设置好密码
4、当用户访问这个网址时,就会需要密码才能访问
5、如果你需要在首页实现更好的引导效果,编写一个custom_navigate的简码功能,在首页实现跳转功能
在wordpress网站目录/wp-content/themes/你所使用的主题名字/functions.php
文件最下面插入以下代码
我其实也不懂php,这是AI帮忙写的代码,大家有什么简单的需求都可以尝试让AI帮忙实现
function custom_navigate_shortcode() {
ob_start();
?>
<center>
<input type="text" id="inputPath" οnkeydοwn="handleKeyPress(event)">
<button οnclick="navigateToPath()">前往</button>
</center>
<script type="text/javascript">
function navigateToPath() {
var path = document.getElementById('inputPath').value;
if (path) {
window.location.href = '/' + path + '/'; // 将当前页面重定向到新的路径
} else {
alert('请输入有效的客户识别代码!');
}
}
</script>
<?php
return ob_get_clean();
}
add_shortcode('custom_navigate', 'custom_navigate_shortcode');
6、新建一个页面,添加简码,输入[custom_navigate]
7、将此页面设置为首页,最终效果如下
当用户在输入框中输入zhangsan
,就能自动跳转到当前网址/zhangsan的域名当中,然后输入密码,就能访问他需要查询的信息
首页设置成这个样子,这个信息查询系统看着就像点样了
8、其他的优化技巧参考下面方式三的第11步之后
方式二:使用WP Private Content Plus插件实现登录
原理:使用WP Private Content Plus来实现进允许指定用户访问指定页面
优点:可实现登录功能,用户可自行更改密码,可实现账户管理功能
操作难度适中
1、安装wordpress
可以是使用海外共享空间或者vps来安装,因为可以做到免备案。安装方法在网上非常多,这里就不再赘述了
2、安装1个插件:WP Private Content Plus
WP Private Content Plus是实现文章仅允许指定用户才可以查看的功能
免费版已经能满足我们的需求
3、新建用户
这里我新建了一个用户,角色为订阅者
4、修改固定链接结构
这步操作是可选的,纯粹是为了链接地址好记一点
5、新建文章,里面编写上张三才能查看的信息,并设置该篇文章仅允许张三才能访问
6、开启Private Content Module
这个插件功能也挺丰富的,大家有需要的可以研究一下
如果要实现全站都需要登录才能浏览,则将Post Setting
和Page Setting
都启用Enable Global Post Restrictions
,并将Visibility
设置为Members
,另外首页要指定为某篇Post
7、编辑张三的个人主页信息
8、新建一个页面,作为个人信息主页页面
里面加入简码:[wppcp_private_page]
9、设置账户登陆后默认跳转查看的个人信息主页页面详情
PS:目前我用的插件版本是3.6.1,这个版本的可视化编辑页面有点bug,可视化编辑之后实际查看的效果却没有超链接和换行符,建议是在文本页面使用html标签编辑好,再回到可视化页面查看效果
<br>
是换行符,<a>
标签是超链接标签,图片是通过添加媒体的按钮上传的,其他写法请百度html标签
10、设置非管理员用户登录后跳转到个人信息主页
在wordpress网站目录/wp-content/themes/你所使用的主题名字/functions.php
文件最下面插入以下代码
不允许访问后台管理页面则使用以下代码(你可以自行自定义重置密码界面来实现用户自助修改和重置密码):
function wizhi_restrict_admin() {
if ( ! current_user_can( 'manage_options' ) && $_SERVER['PHP_SELF'] != '/wp-admin/admin-ajax.php' ) { //判断是否为管理员
wp_redirect( '/private/' ); //不是管理员则跳转到/private/界面
}
}
add_action( 'admin_init', 'wizhi_restrict_admin', 1 );
允许访问后台管理页面则使用以下代码(可以到后台自行修改资料和密码):
function redirect_after_login() {
return '/private/';//登陆后跳转到/private/界面
}
add_filter('login_redirect', 'redirect_after_login');
11、检验效果
使用zhangsan账户登录后,自动跳转到个人信息主页,每个账号查看到的都是在第9步设置的个人信息,并且里面的链接都设定了只有指定账号才能访问
12、其他的优化技巧参考下面方式三的第11步之后
方式三:使用多个插件实现登录
原理:使用ProfileGrid、WP Private Content Plus插件来实现
优点:可实现登录功能,用户可自行更改密码,可实现账户管理功能,另外插件还有很多丰富的功能,例如群组管理等
缺点:设置较为麻烦
1、安装wordpress
可以是使用海外共享空间或者vps来安装,因为可以做到免备案。安装方法在网上非常多,这里就不再赘述了
2、安装2个插件:ProfileGrid、WP Private Content Plus
ProfileGrid是实现让用户登录后跳转到个人主页的功能
WP Private Content Plus是实现文章仅允许指定用户才可以查看的功能
免费版已经能满足我们的需求
3、关闭ProfileGrid里面用不到的功能
ProfileGrid里面的功能很丰富,这是一个会员信息管理插件,有很多我们用不到的功能,例如私信,好友系统等等,大家按需关闭
4、新建一个成员,此处我新建了一个账户名为zhangsan的成员,并加入群组
5、开启Private Content Module
这个插件功能也挺丰富的,大家有需要的可以研究一下
如果要实现全站都需要登录才能浏览,则将Post Setting
和Page Setting
都启用Enable Global Post Restrictions
,并将Visibility
设置为Members
,另外首页要指定为某篇Post
6、新建文章,里面编写上张三才能查看的信息
这里其实也可以插入其他的文章链接,形成一个目录结构,其他的文章记得也要设置好权限
7、设置该篇文章仅允许张三才能访问
8、修改成员资料显示字段
这里我新建了一个信息查询字段,让这个字段显示在成员资料页,方便成员登录后快速看到需要查询信息的页面链接
无用字段大家可以自行删除,website字段对应的就是成员资料里的“网站”,Biographical Info字段对应的就是成员资料里的“个人说明”
9、website字段和Biographical Info字段我们可以在用户的个人资料页面维护,但是新加的字段似乎只能是登录该用户账号之后再编辑该字段来维护信息,这点暂时还没有找到比较好的办法(应该还能通过操作数据库的方式来实现)
10、查看效果
此时在网站首页登录之后,页面会跳转到个人资料页面,按照提示点击链接,即可直接跳转到需要查询的信息页面(就是刚刚新建文章的页面)。并且该信息页面只有张三这个用户登陆后才能查看到,未登录或者其他非管理员用户都无法查看,很好的保护了用户信息
11、插件推荐
插件名称 | 作用 |
---|---|
WP Disable Sitemap | 隐藏站点地图 |
Wordfence Security | 网站安全防护 |
WPS Hide Login | 隐藏默认的登录链接 |
WPFront Scroll Top | 页面较长时方便用户回到最上面 |
HappyFiles Pro | 个人认为最好用的媒体库管理工具 |
此外建议把设置当中的“建议搜索引擎不索引本站点”勾选上
12、页面优化
修改之后的网站需要再优化一下页眉页脚和首页等地方,最好换一个主题,自带的主题不是很好用,用Kadence主题不错,免费版就够用了。
wordpress还有很多可优化的地方,网上教程众多,此处不再赘述
13、使用Ajax Search Lite插件实现快速搜索
对于管理员来说,由于文章列表功能很有限,文章那里去要快速找到需要编辑的文章很不方便,此处选择Ajax Search Lite插件来快速找到你需要查看和编辑的文章
①安装Ajax Search Lite
②新建一个页面,将Ajax Search Lite添加进来,并此页面设置为仅管理员可见
③此时管理员登录网站后再访问这个网页,就能够快速找到并编辑你想要编辑的文章,如果未登录网站就去访问的话,只会显示404页面
后话
以上三个方法是我研究了很多方案之后,研究出来的最符合我们需求的解决方案,看到网上还没有人分享这个,故分享出来。
很多wordpress的入门操作这里没有过于详细的介绍,所以阅读本文需要有一点wordpress基础。
如果要批量去上传更新多个账户的查询页面的信息,也许可以通过操作数据库的形式去实现,这点暂时没有研究。
此处仅仅只是抛砖引玉,希望能给有类似需求的网友一点启发。