• 国庆快乐,放假三天

  • 准备增加一个免登录支付功能

  • 微信扫码登录功能已经 ok 了

  • 主题更新一下,修复了头像挂掉的问题

  • 后羿更新网站文章可能不会那么闲了

  • 不得不说,美国贴吧的界面真是难看到死

  • 看到网上新闻美国的贴吧将成为中国公司

  • 推送试试

  • 睡觉之前测试一下

  • 发现了一个非常不错的插件

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

WordPress 云落 5年前 (2015-02-16) 895次浏览 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');
}

后语

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

-- 完 --
使用wp_get_attachment_url函数自动替换媒体库文件路径
扫码订阅,第一时间获得更新
微信扫码二维码,订阅我们网站的动态,另外不定时发送 WordPress 小技巧,你可以随时退订,欢迎订阅哦~

极客公园 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:使用wp_get_attachment_url函数自动替换媒体库文件路径

极客公园 , 版权所有丨如未注明 , 均为原创丨本网站采用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