使用wp_get_attachment_url这个比较陌生的函数,将WordPress后台的媒体库的文件的URL自动替换
前言
昨天在开发主题的时候,想试试能不能删除服务器本地文件,只保留七牛CDN文件,因为我的主题完美支持各种缩略图,所以一咬牙,删除了所有文件,为服务器腾出来300M大小的空间,前台没有一丝问题,但是后台却发生了问题,就是媒体库图片全部不现实了,在添加媒体的时候,全是裂图。为了解决这个问题,就有了今天这篇文章
问题思路
处理这个问题,我使用了浏览器的审查元素,发现媒体库的文件路径仍然是主机的路径,文件域名还是我的.me
,但是实际上我的本地文件都被删光了,没有了,所以这个路径是没有文件的,但是如果把我的本地域名.me
换成我的七牛域名.me/wp-content/uploads
图片就可以显示了,明白了大致的思路下面就开始实际操作了。
相关函数
在查阅之后发现,WordPress的确有管理媒体库的相关函数,其中wp_get_attachment_url
函数就是管理这个功能的,但是百度谷歌之后才发现这个很熟非常冷僻,网上几乎没啥深入的讨论,所以只有自己研究了。
查看官方文档和WordPress源程序之后发现了关于这个函数的信息,这个函数位于WordPress系统文件wp-includespost.php
处,关键信息在4959
行,好吧,有了这个过滤器就好办了。
代码部署
将以下代码插入
主题functions.php
文件倒数第二行里面
//自动替换媒体库图片的域名 function yunluo_attachment_replace($text){ $replace = array(''.get_bloginfo('url').'' => '.me/wp-content/uploads');//这里自己设置自己的七 牛域名 $text = str_replace(array_keys($replace), $replace, $text); return $text; } if ( is_admin() ) { add_filter('wp_get_attachment_url', 'yunluo_attachment_replace'); }
后语
这个函数虽然很简短,但是却极大的增强了本站主题的七牛兼容性,目前这款主题可能是支持七牛最完美的主题吧,开启七牛后,网站静态资源七牛化,缩略图七牛化,后台文件七牛化,现在我的本地服务器文件全部删掉了,一个字:爽!
-- 完 --
这个略屌 😉
@同盟源 必须的 😆 😆 😆