WordPress外链安全跳转插件2.0
老白博客我参照csdn和腾讯云的外链跳转页面,写了一个WordPress外链安全跳转插件:给网站所有第三方链接添加nofollow标签和重定向功能,提高网站安全性。插件有两个版本:CSDN版和腾讯云版。代码大小10kb,并且新增了跳转界面的广告位!
1. 插件功能说明
之前老白博客也写了一些WordPress外链跳转页面的教程,都是纯代码实现的。
今天这个是参照csdn和腾讯云的跳转界面来制作的WordPress插件,代码非常少,10kb左右
缓存和外链跳转演示效果:https://test.xcbtmw.com/
插件功能说明:
- 当用户点击站点上的第三方链接时,这个插件会截获这些链接并进行处理。
- 它会在重定向之前显示一个跳转页面,该页面包括站点Logo、跳转警告信息以确保用户注意账户和财产安全,以及目标链接。
- 用户可以点击“继续”按钮来继续访问目标链接。
- 使用base64加密网址,不可直接访问中间跳转页面
- 插件对外链的处理进行了缓存,提高了效率
2. 插件设置说明
2.1 logo图片链接
此处填入跳转界面的图片链接,默认不填就是演示中的csdn的logo或者腾讯云社区的logo
2.2 白名单域名
每一行输入一个域名即可
比如输入xcbtmw.com,那么所有子域名都不会被处理,比如test.xcbtmw.com、a.xcbtmw.com
但是输入test.xcbtmw.com,那么仅有该子域名不会被处理,其他的子域名如a.xcbtmw.com会被处理
2.3 广告位HTML
示例代码,支持多行(ps.该功能来自不凡博客的建议😛😛😛)
<a href="http://www.xcbtmw.com" target="_blank">
<img src="https://pic.imgdb.cn/item/65423b6dc458853aef7f509a.jpg" alt="异域风情" />
</a>
<a href="http://www.xcbtmw.com" target="_blank">
<img src="https://pic.imgdb.cn/item/654237cdc458853aef743883.jpg" alt="摇摆至上" />
</a>
2.4 缓存处理方式
选择缓存处理方式,有memcached、redis和不使用缓存两种,并且会有检测当前环境是否支持memcached或者redis
- 支持则用绿色文字提示
- 不支持则弹出警告,并自动切换为不使用缓存
可以使用以下代码在主题文件的single.php文件下检验memcached或者redis缓存是否生效,放到the_content()函数前面即可,例如:
<div class="main-article">
<!-- 缓存验证代码 -->
<?php
$article_id = get_the_ID(); // 获取当前文章的ID
$cache_option = get_option('plugin_cache_option', 'none'); // 获取插件的缓存选项
// 根据插件的缓存选项构建相应的缓存键
if ($cache_option === 'memcached') {
$key = 'thirdplugin-Mcache_' . $article_id;
} elseif ($cache_option === 'redis') {
$key = 'thirdplugin-Rcache_' . $article_id;
}
$cached_content = wp_cache_get($key, 'third_party_links_cache');
echo "文章ID:" . $article_id . "<br>";
echo "缓存选项:" . $cache_option . "<br>";
echo "缓存键:" . $key . "<br>";
// 进行缓存验证
if ($cached_content === false) {
// 缓存数据不存在或已过期
echo $cache_option . " 缓存数据不存在或已过期。";
} else {
// 缓存数据存在,输出处理后的外链数据
echo $cache_option . " 处理后的外链数据:" . $cached_content;
}
?>
<!-- 缓存验证代码 -->
<?php echo the_content(); ?>
</div>
3. 插件下载
插件有两个样式,腾讯云社区版和csdn版,请按照自己的需求选择下载
- WordPress安全跳转插件_Tencent版
- WordPress安全跳转插件_CSDN版
蓝奏地址:https://qtrj.lanzoul.com/b00rttd3c 密码:6yu5
4. 更新日志
1.0版:
完成插件开发
2.o版
此版多亏了果酱大佬的建议
- 缓存,选择使用memcached、redis作为缓存处理对象
- 对网站外链域名进行提取,确保只有网站的外链能通过go.php进行跳转,其他链接不行,避免了被黑产利用
- 优化了原跳转链接,解决了跳转链接中“//”的问题
- 优化了白名单链接为新窗口打开
5.BUG问题收集
①.子比主题
子比主题需要关闭主题自带的重定向功能
②.ceo总裁主题
没反应,开启缓存后首页图片不显示,关闭后显示(未测试,老白无该主题)
③CAARDS主题
用户反映BUG,老白未测试(付费主题,买不起)
问题找到了 是这个 the_content_nofollow 跟子比的有相同。我改一下你的文档里的名称就可以了,谢谢你的插件
刚看到不好意思,子比需要关闭主题自带的重定向功能
我目前是用子比主题7.5.1,我试了一下改用wp主题自带主题是可以启用,但启用后一切换到子比主题,就整个后台挂掉了。提示如下
Fatal error: Cannot redeclare the_content_nofollow() (previously declared in D:\phpstudy_pro\WWW\wp-content\plugins\third-party-links\third-party-links.php:27) in D:\phpstudy_pro\WWW\wp-content\themes\zibll\inc\functions\zib-theme.php on line 1861
Warning: Trying to access array offset on value of type bool in D:\phpstudy_pro\WWW\wp-includes\class-wp-recovery-mode-email-service.php on line 367
Warning: Trying to access array offset on value of type bool in D:\phpstudy_pro\WWW\wp-includes\class-wp-recovery-mode-email-service.php on line 368
此站点遇到了致命错误,请查看您站点管理员电子邮箱中收到的邮件来获得指引。
[20-Jan-2024 05:38:26 UTC] PHP Fatal error: Cannot redeclare the_content_nofollow() (previously declared in D:\phpstudy_pro\WWW\wp-content\themes\zibll\inc\functions\zib-theme.php:1861) in D:\phpstudy_pro\WWW\wp-content\plugins\third-party-links\third-party-links.php on line 27
无法启用插件,因为它引起了一个致命错误(fatal error)
我的是wp6.4.2 点启用时提示了这个
把wp_debug打开呢,是不是插件冲突,你是哪个主题
你好,插件很不错,使用中发现如果redis设置了密码的情况下,选择缓存处理方式选择Redis,文章页面显示异常,网站将会报错,然后提示Uncaught RedisException: NOAUTH Authentication required
是这样的,我的redis和memcached的默认配置都是没有密码的情况
精简小巧,建议在跳转页面加个广告位。
广告位搞定