WordPress: 编辑器中添加媒体为相对路径

相对路径更好一些

之前在做SSL的时候,会有个问题.文章中的图片或者视频链接全都是绝对路径(包含完整域名).如果要更换域名,或者从普通协议转到SSL的时候,需要替换全部非SSL的地址.

比如普通的是: http://www.bckf.cn ,如果文章中大量存在此类链接,会导致https访问时报错.

除了在数据库中直接替换之外,另外一个办法就是在编辑器里面做处理了(编辑器里面的设置仅对后续的文章有效,之前的文章只能通过数据库处理).

wordpress logo
image-3111

需要修改

修改之前,请先备份相关文件!

1. 博客主目录/wp-admin/includes/ajax-actions.php

1.1 wp_ajax_query_attachments()函数中


1
$posts = array_filter( $posts );

的下面,增加如下内容:


1
2
3
4
5
6
7
8
9
foreach($posts as &$el){
        $newurl=str_replace(home_url(),"",$el['url']);
        $el['url']=$newurl; //str_replace(home_url(),"",$el["url"]);
        $el['sizes']['full']['url']=$newurl;
        $el['sizes']['medium']['url']=str_replace(home_url(),"",$el['sizes']['medium']['url']);
        $el['sizes']['thumbnail']['url']=str_replace(home_url(),"",$el['sizes']['thumbnail']['url']);
        $el['sizes']['large']['url']=str_replace(home_url(),"",$el['sizes']['large']['url']);
}
unset($el); // 销毁$el的引用.

1.2 wp_ajax_send_attachment_to_editor()函数

 


1
$html = apply_filters( 'media_send_to_editor', $html, $id, $attachment );

 

的下面增加:


1
$html=str_replace(home_url(),"",$html);

 

2. 博客主目录/wp-admin/includes/media.php:


1
media_send_to_editor( $html )

 

函数的第一行,增加:


1
$html=str_replace(home_url(),"",$html);

发表回复

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

*

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据