2017-07-29 12 views
0

私のWordPressサイトのフロントエンドに自分のカスタム画像/ファイルアップローダを作成しようとしています。私はファイルをアップロードするときにデータベースに保存されますが、メディアライブラリではファイルは完全にアップロードされません。また、wp-content/uploadsフォルダをチェックすると、これを修正する方法はありません。wp_insert_attachmentメディアライブラリまたはアップロードフォルダに画像をアップロードしない

メディアライブラリ内のファイルの画像 unfinished upload file in Media Library

<form method="post" enctype="multipart/form-data"> 
    Select image to upload: 
    <input type="file" name="img-upload" id="img-upload" /> 
    <input type="submit" value="Upload Image" name="submit"> 
</form> 

require_once(ABSPATH . "wp-admin" . '/includes/image.php'); 
require_once(ABSPATH . "wp-admin" . '/includes/file.php'); 
require_once(ABSPATH . "wp-admin" . '/includes/media.php'); 

$image = $_POST['img-upload']; 
$upload_dir = wp_upload_dir(); 

$file_name = basename($image); 
//$file_data = file_get_contents($file); 

$file_dir = $upload_dir['basedir'] . "/" . basename($image); 
$file_type = wp_check_filetype($image,null); 

$attachment = array(
    'guid' => $file_dir, 
    'post_mime_type' => $file_type['type'], 
    'post_title' => preg_replace('/\\.[^.\\s]{3,4}$/', '', $image), 
    'post_content' => '', 
    'post_status' => 'inherit' 
); 

$attach_id = wp_insert_attachment($attachment, $image,0); 
require_once(ABSPATH . 'wp-admin/includes/image.php'); 

$attach_data = wp_generate_attachment_metadata($attach_id, $file_dir); 
wp_update_attachment_metadata($attach_id, $attach_data); 
+0

あなたは 'print_r($ _ FILES);'の内容を提供できますか? – user2914191

+0

$ _FILES @ user2914191 –

+0

にvar_dumpまたはprint_rを使用すると、何も表示されません。何故 '$ _FILES'に何も表示されないのが分かります。 https://stackoverflow.com/questions/3586919/why-would-files-be-empty-when-uploading-files-to-phpそしてあなたが気付いたように、 '$ _FILES'はあなたがフォームを提出した時だけデータを含むべきですファイルをアップロードします。 – user2914191

答えて

0

あなたはこのコードを試すことができます。それは動作します

<?php 
    if(isset($_POST['submit'])){ 

    require_once(ABSPATH . 'wp-admin/includes/image.php'); 

    require_once(ABSPATH . 'wp-admin/includes/file.php'); 

    require_once(ABSPATH . 'wp-admin/includes/media.php'); 

    $attachment_id = media_handle_upload('img-upload', ''); 
    if (is_wp_error($attachment_id)) { 
    $attachment_url=""; 
    } 
    else { 
    $attachment_url=wp_get_attachment_url($attachment_id);; 
     } 

     if(!empty($attachment_url)){  
    //do the stuff you want to 
    } 


    } 

    ?> 
関連する問題