我正在尝试制作一个插件,作为其任务的一部分,将csv文件上传到wordpress安装。决定尽可能使用wordpress函数进行紧密集成,我正在将上载的文件保存到正确的当前wordpress文件夹中(在wp\\u upload\\u dir()函数的帮助下)。
然后,我将上传作为附件添加到posts表中,以便用户可以通过媒体页面进行管理。这是通过内置函数wp\\u insert\\u attachment()完成的。这就是事情似乎出错的地方。
基本上,我解析到函数的文件名中有空格,但当我查看posts表中的GUID值时,空格已被去掉。如果我通过wordpress媒体页面界面添加相同的文件,空格将替换为连字符。我理解为什么wordpress在不能很好地处理空格的旧浏览器中添加连字符以使文件url更安全,但是为什么在解析到wp\\U insert\\U附件时会删除空格?
以便确认;通过wordpress界面上载“Work Spreadsheet.csv”会导致预期的GUID为
http://domain.com/wordpress/wp-content/uploads/2013/11/Work-Spreadsheet.csv
但是通过我的插件代码
http://domain.com/wordpress/wp-content/uploads/2013/11/WorkSpreadsheet.csv
此外,在wp\\U Posteta表中,当通过wordpress界面上载时,meta\\u键“\\u wp\\u attached\\u file”的值添加了连字符,并且相对文件夹路径为:2013/11/Work Spreadsheet。csv
其中,对于通过我的代码进行的上载,其没有文件夹路径和文件名,不会从我的原始工作电子表格中修改。csv
有人能帮忙解释为什么会发生这种情况吗?下面是我使用wp\\u insert\\u attachment()之前的代码作为参考。。只是说;我尝试过其他文件类型,如图像,以防与上载文本文件有关,但结果是一样的。
$attachment = array(
\'guid\' => $upload_dir_array[\'url\'] . \'/\' . basename( $destination_name ),
\'post_mime_type\' => $wp_filetype[\'type\'],
\'post_title\' => preg_replace(\'/\\.[^.]+$/\', \'\', basename($destination_name)),
\'post_status\' => \'inherit\'
);
$attach_id = wp_insert_attachment( $attachment, $destination_name );
// for the function wp_generate_attachment_metadata() to work
require_once(ABSPATH . "wp-admin" . \'/includes/image.php\');
$attach_data = wp_generate_attachment_metadata($attach_id,$upload_dir.$destination_name );
wp_update_attachment_metadata( $attach_id, $attach_data );