• 欢迎访问乐趣公园网站,WordPress信息,WordPress教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入乐趣公园 QQ群
  • Git主题现已支持PHP7版本,速度应该会提高不少,不过云落的网站本来就很快了,所以感觉不是太明显
  • 最新版Git主题已支持说说碎语功能,可像添加文章一样直接添加说说,新建说说页面即可,最后重新保存固定连接,演示地址
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏乐趣公园吧
  • 云落的淘宝店铺已经开张了哦,传送门:https://kimipet.taobao.com

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

WordPress 云落 3年前 (2015-02-16) 502次浏览 已收录 5个评论
文章目录[隐藏]

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

后语

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

乐趣公园 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:使用 wp_get_attachment_url 函数自动替换媒体库文件路径
喜欢 (5)
云落
关于作者:
无折腾,不生活,我是一个WordPress菜鸟,一个玩淘宝的卖家,欢迎你认识我,我是云落!
发表我的评论
取消评论
表情 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(5)个小伙伴在吐槽
  1. 这个略屌 :wink:
    同盟源2015-02-27 10:54 回复 Windows 7 | Chrome 39.0.2171.99
    • 云落
      必须的 :lol: :lol: :lol:
      云落2015-02-27 12:01 回复 Windows 7 | Chrome 38.0.2125.122