Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Wordpress多站点wp\u上传\u目录错误_Php_Wordpress_Url_Upload_Multisite - Fatal编程技术网

Php Wordpress多站点wp\u上传\u目录错误

Php Wordpress多站点wp\u上传\u目录错误,php,wordpress,url,upload,multisite,Php,Wordpress,Url,Upload,Multisite,目前我正试图上传一个图像到服务器端的Wordpress多站点。 (映像已位于同一服务器的另一路径上) 我已经编写了一个小PHP脚本,可以处理以下问题: $upload_dir = wp_upload_dir(); var_dump( $upload_dir); $filename = basename($imagepath); if (wp_mkdir_p($upload_dir['path'])) { $file = $upload_dir[

目前我正试图上传一个图像到服务器端的Wordpress多站点。 (映像已位于同一服务器的另一路径上)

我已经编写了一个小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\u ID/2016/03

稍后当WP使用图像时,图像的url设置为
http://example.com/wp-content/uploads/sites/SITE_ID/2016/03/IMAGE.JPG
(这是不正确的…)

使用内置媒体上传工具从wordpress works正确上传文件(文件存储在
/wp content/uploads/sites/SITE_ID/2016/03
中)

你看,
wp\u upload\u dir()
工作不正常

谢谢..

我解决了

对于每个有相同问题的人,解决方案很简单:

  • 当您在multisite上时,为“upload_dir”注册一个过滤器
  • 定义一个函数,在其中临时更改路径和URL
  • 就这样

    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;
    }
    
  • 希望有人能使用它。对我来说是好几个小时