使用wp_get_attachment_url函数自动替换媒体库文件路径

» WordPress » 使用wp_get_attachment_url函数自动替换媒体库文件路径

使用wp_get_attachment_url这个比较陌生的函数,将WordPress后台的媒体库的文件的URL自动替换

使用wp_get_attachment_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');
}

后语

这个函数虽然很简短,但是却极大的增强了本站主题的七牛兼容性,目前这款主题可能是支持七牛最完美的主题吧,开启七牛后,网站静态资源七牛化,缩略图七牛化,后台文件七牛化,现在我的本地服务器文件全部删掉了,一个字:爽!

-- 完 --

发表评论

电子邮件地址不会被公开。 必填项已用*标注

5 Replies to “使用wp_get_attachment_url函数自动替换媒体库文件路径”