找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6220|回复: 0

[知识库] WordPress开启https后把文章图片改为https的解决方法

[复制链接]
发表于 2020-3-5 19:57:27 | 显示全部楼层 |阅读模式 来自 河南省新乡市
WordPress 站点开启 HTTPS 后,文章中引用的图片就很有必要把 HTTP 统一改为 HTTPS,要不然会地址栏上的绿锁就会有黄色的三角。

为了解决这个问题,网上有很多种实现方法:一个是治标不治本的办法,就是在主题的 functions.php 文件中加入字符替换语句,这样读者在每次访问的时候会相应的把图片的 http 链接替换为 https,而数据库的原始内容不变,这种方法会影响网站访问速度,游子不推荐用这种方法,虽然简单只需要在主题模板函数文件中添加代码即可。

另外一个彻底解决的办法是,直接进入数据库用 SQL 语句把 HTTP 直接替换为 HTTPS,下面就这两个方法做简单介绍有需要用到的同学往下看:

方法一:通过主题的 functions.php 文件来批量替换:
在主题文件中找到 functions.php(WP后台“外观”-“编辑”右侧可以找到)里加入如下代码(注意域名需要做相应修改)

写法一:
  1. /* 替换文章图片链接为 https */
  2. function https_image_replacer($content){
  3. if( is_ssl() ){
  4. $host_name = $_SERVER['HTTP_HOST'];
  5. $http_host_name='http://'.$host_name.'/wp-content/uploads';
  6. $https_host_name='https://'.$host_name.'/wp-content/uploads';
  7. $content = str_replace($http_host_name, $https_host_name, $content);
  8. }
  9. return $content;
  10. }
  11. add_filter('the_content', 'https_image_replacer');
复制代码

写发二:
  1. function replacehttp($content){
  2. if( is_ssl() ){
  3. $content = str_replace('http://域名/wp-content/uploads', 'https://域名/wp-content/uploads', $content);
  4. }
  5. return $content;
  6. }
  7. add_filter('the_content', 'replacehttp');
复制代码

方法二:通过 SQL 语句进行正文的批量替换(推荐)
PS:操作前请务必对数据库进行备份,以避免不可挽回的数据丢失!

用phpmyadmin工具进入数据库管理,点击SQL->粘帖语句到输入框->点击执行即可,运行如下语句批量替换:
  1. UPDATE wp_posts SET post_content = replace(post_content, 'http://域名/wp-content/uploads','https://域名/wp-content/uploads');
复制代码

PS:记得将以上语句中的域名及路径改成自己的,如果更改过数据库表的前缀,还要记得修改wp_为你自己的实际前缀哦。

游子推荐使用方法二,修改数据库!这种方法以一劳永逸!

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 需要先绑定手机号

关闭

站长推荐上一条 /1 下一条

QQ|侵权投诉|广告报价|手机版|小黑屋|西部数码代理|飘仙建站论坛 ( 豫ICP备2022021143号-1 )

GMT+8, 2024-3-29 22:16 , Processed in 0.046061 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表