2014-01-10 37 views
0

所以我正在用wordpress製作一個簡單的文件上傳器,用戶不需要進入wp-admin來添加文件。前端文件上傳返回錯誤的附件網址

我有它工作得很好,它將文件上傳到正確的文件夾..等但我唯一遇到的問題是它返回錯誤的文件URL。

例如上傳文件時,它進入「/wp-content/uploads/2014/01/file.png」,但它返回附件的URL爲「/uploads/file.png」

我的代碼:

define('WP_USE_THEMES', false); 
require_once($_SERVER['DOCUMENT_ROOT']. '/wp-load.php'); 
include_once($_SERVER['DOCUMENT_ROOT']. '/wp-admin/includes/media.php'); 
include_once($_SERVER['DOCUMENT_ROOT']. '/wp-admin/includes/file.php'); 
include_once($_SERVER['DOCUMENT_ROOT']. '/wp-admin/includes/image.php'); 

if(!$_FILES) exit; 
if (!defined("PHP_EOL")) define("PHP_EOL", "\r\n"); 

//define variables 
if(isset($_FILES['fileUpload'])) 
    { 
    $files = $_FILES['fileUpload']; 
    } 
$upload_dir = wp_upload_dir(); 

$file_name = $files['name']; 
$file_vars = array('test_form' => FALSE); //Allows form submission 
$file_post = wp_handle_upload($files, $file_vars); //Posts File 
$file_link = $file_post['url']; //Full URL 
$file_type = wp_check_filetype(basename($file_link), null); //File Extension 

$post_name = preg_replace('/\.[^.]+$/', '', basename($file_link)); //Post Name 

$attachment = array(
      'guid' => $file_link, 
      'post_mime_type' => $file_type['type'], 
      'post_title' => $post_name, 
      'post_content' => '', 
      'post_status' => 'inherit' 
       ); 
$attach_id = wp_insert_attachment($attachment, $file_name); 
//Generates meta 
$attach_data = wp_generate_attachment_metadata($attach_id, $file_name); 
//Updates meta 
$attach_final = wp_update_attachment_metadata($attach_id, $attach_data); 

任何想法我做錯了什麼?

+0

嘗試看看變種的內容的preg_replace之前,也許以後就是它。 – Goikiu

回答

0

我弄清楚我做錯了什麼!

基本上產生附接元數據時,我給它的錯誤路徑..

我給它的實際文件的路徑「/wp-content/uploads/2014/01/file.png」

但實際上它需要的文件是的文件夾的路徑「/的wp-content /上傳/ 2014/01 /」