WP使用的链接一直都是使用的绝对链接,之前网站域名更改需要疯狂更改链接,如果使用相对链接,那就不用有搬迁顾虑了QvQ。
绑定动态域名
众所周知,WP初始化时候都要设置网站域名,如果使用IP访问网站,就会跳转到指定域名,非常麻烦。
所以,作者经过实践,得出了可以让WP链接使用相对地址的方法,故整理出一片笔记,待以后备忘。
设置动态域名(解绑域名)
查看网站的源代码发现网站includes/option.php文件中存在函数get_option,该函数通过参数名来获取数据库中wp_options中的字段。
现在的要求是能使得wordpress使用任何ip都能正常解析,那么可以在这个函数中判断参数为home或者siteul的请求,如有该请求不去查询数据库直接返回需要的地址。
将函数进行如上修改:在函数开始部分加上判断并设置动态的ip地址,如果网站设置不在根目录,该目录根据实际情况设置。
使用相对地址
打开wp-includes/post.php文件,修改函数wp_get_attachment_url为如下代码
function wp_get_attachment_url( $attachment_id = 0 ) {
global $pagenow;
$file_dir=dirname(__FILE__);
$server_root=$_SERVER['DOCUMENT_ROOT'];
$file_dir=substr($file_dir,strlen($server_root));
$file_dir=substr($file_dir,0,-12);
if($file_dir!=''){
$file_dir='/'.substr($file_dir,1);
}
$attachment_id = (int) $attachment_id;
$post = get_post( $attachment_id );
if ( ! $post ) {
return false;
}
if ( 'attachment' !== $post->post_type ) {
return false;
}
$url = '';
// Get attached file.
$file = get_post_meta( $post->ID, '_wp_attached_file', true );
if ( $file ) {
// Get upload directory.
$uploads = wp_get_upload_dir();
if ( $uploads && false === $uploads['error'] ) {
// Check that the upload base exists in the file location.
if ( 0 === strpos( $file, $uploads['basedir'] ) ) {
// Replace file location with url location.
$url = $file_dir."/wp-content/uploads/".$file;
} elseif ( false !== strpos( $file, 'wp-content/uploads' ) ) {
// Get the directory name relative to the basedir (back compat for pre-2.7 uploads).
$url = $file_dir."/wp-content/uploads/".$file;
} else {
// It's a newly-uploaded file, therefore $file is relative to the basedir.
$url = $file_dir."/wp-content/uploads/".$file;
}
}
}
/*
* If any of the above options failed, Fallback on the GUID as used pre-2.7,
* not recommended to rely upon this.
*/
if ( ! $url ) {
$url = get_the_guid( $post->ID );
}
// On SSL front end, URLs should be HTTPS.
if ( is_ssl() && ! is_admin() && 'wp-login.php' !== $pagenow ) {
$url = set_url_scheme( $url );
}
/**
* Filters the attachment URL.
*
* @since 2.1.0
*
* @param string $url URL for the given attachment.
* @param int $attachment_id Attachment post ID.
*/
$url = apply_filters( 'wp_get_attachment_url', $url, $post->ID );
if ( ! $url ) {
return false;
}
return $url;
}
之后插入导入图片,地址就是相对地址啦!
还没发表评论,快来发表第一个评论吧~