目前我正在尝试将图片上传到服务器端的Wordpress-Multisite。 (图像已经在同一服务器的另一条路径上)
我已经写了一个小PHP脚本,应该处理这个问题:
$upload_dir = wp_upload_dir();
var_dump( $upload_dir);
$filename = basename($imagepath);
if (wp_mkdir_p($upload_dir['path'])) {
$file = $upload_dir['path'].'/'.$filename;
} else {
$file = $upload_dir['basedir'].'/'.$filename;
}
copy($imagepath, $file);
$wp_filetype = wp_check_filetype($filename, null);
$attachment = array(
'guid' => $upload_dir['url'].'/'.basename($filename),
'post_mime_type' => $wp_filetype['type'],
'post_title' => sanitize_file_name($filename),
'post_content' => '',
'post_status' => 'inherit', );
$attach_id = wp_insert_attachment($attachment, $file, $postid);
一切正常,但图像存储在错误的文件夹中。
wp_upload_dir();
返回公共路径/wp-content/uploads/2016/03
,而不是特定子网站的路径,将/wp-content/uploads/sites/SITE_ID/2016/03
稍后当WP使用图像时,图像的网址设置为http://example.com/wp-content/uploads/sites/SITE_ID/2016/03/IMAGE.JPG
(这是不正确的......)
使用wordpress内置的媒体上传工具上传文件工作正常(文件存储在/wp-content/uploads/sites/SITE_ID/2016/03
)
你看,wp_upload_dir()
工作不正确..
谢谢..
答案 0 :(得分:6)
我解决了!
对于遇到同样问题的每个人,解决方案很简单:
那就是它!
if(is_multisite()){
add_filter('upload_dir', 'fix_upload_paths');
}
function fix_upload_paths($data)
{
$data['basedir'] = $data['basedir'].'/sites/'.get_current_blog_id();
$data['path'] = $data['basedir'].$data['subdir'];
$data['baseurl'] = $data['baseurl'].'/sites/'.get_current_blog_id();
$data['url'] = $data['baseurl'].$data['subdir'];
return $data;
}
希望有人可以使用它。我的小时数。