如何覆盖WordPress插件样式表URL?解决HTTP链接不安全拦截问题
解决WordPress插件HTTP样式链接引发的混合内容安全问题
完全可以通过子主题来搞定这个问题,而且这比直接修改插件文件靠谱多了——毕竟改插件文件的话,插件一更新你的修改就没了,子主题能帮你保留自定义设置。下面给你两种实用的解决方法:
方法一:替换插件样式的协议为HTTPS
核心思路是先移除插件硬编码的HTTP样式,再重新用HTTPS协议加载它。具体操作步骤如下:
- 打开子主题的
functions.php文件(可以在WordPress后台的「外观 > 主题文件编辑器」里找到,或者用FTP连接服务器修改); - 把下面的代码粘贴进去:
function replace_http_plugin_style() { // 先移除插件原来的HTTP样式,这里的'fbw-css'是你示例里的样式ID,要换成实际的ID wp_dequeue_style('fbw-css'); wp_deregister_style('fbw-css'); // 重新注册并加载HTTPS版本的样式,替换成你实际的插件样式路径 wp_enqueue_style('fbw-css', 'https://wdcb.stcwdc.org/wp-content/plugins/你的插件具体路径/样式文件名.css', array(), '1.0', 'all'); } // 设置较高优先级,确保在插件加载样式之后执行这个函数 add_action('wp_enqueue_scripts', 'replace_http_plugin_style', 99);
注意:要把代码里的你的插件具体路径/样式文件名.css替换成实际的路径,和原来的HTTP链接保持一致,只是把http://改成https://就行。
方法二:把插件样式迁移到子主题,禁用原插件样式
如果不想依赖插件自带的样式文件(比如担心插件更新后样式被修改),可以把插件的CSS内容复制到子主题里,再禁用原插件的HTTP样式:
- 打开那个HTTP链接指向的插件CSS文件,复制里面所有的代码;
- 粘贴到子主题的
style.css文件末尾; - 同样在子主题的
functions.php里添加这段代码,移除原插件的HTTP样式:
function disable_http_plugin_style() { wp_dequeue_style('fbw-css'); wp_deregister_style('fbw-css'); } add_action('wp_enqueue_scripts', 'disable_http_plugin_style', 99);
这样浏览器就只会加载子主题里的HTTPS样式,再也不会触发混合内容的安全警告了。
小提示
- 如果你不确定样式ID是什么,去页面源码里找那个
<link>标签的id属性值就行(比如你示例里的fbw-css); - 修改
functions.php前最好备份一下文件,避免代码写错导致网站打不开; - 完成后记得清空浏览器缓存,刷新页面检查警告是否消失。
内容的提问来源于stack exchange,提问作者Cynthia A Lockley




