2017-09-16 1 views
-1

Ich erstelle ein benutzerdefiniertes Formular (ohne Verwendung eines Plugins), das Daten von Benutzern auf dem Front-End erhält, nicht aus dem Admin-Bereich. Eines der Formularelemente ist ein Dateifeld, in dem Benutzer mehrere Dateien hochladen können.Wie speichert man hochgeladene Dateien in Wordpress?

Was sind die Mechanismen zum Speichern von benutzerdefinierten Dateien in Wordpress? Gibt es Hilfsfunktionen, mit denen Entwickler Dateien einfach speichern können?

Antwort

1

Nach Upload-Taste erhalten Sie eine Datei BLOB erhalten, indem Sie $ _FILES

$file = $_FILES['filename']; 
$filename = $file["tmp_name"] 

$upload_file = wp_upload_bits($filename, null, $file); 

if (!$upload_file['error']) { 
    $wp_filetype = wp_check_filetype($filename, null); 
    $attachment = array(
     'post_mime_type' => $wp_filetype['type'], 
     'post_parent' => $parent_post_id, 
     'post_title' => preg_replace('/\.[^.]+$/', '', $filename), 
     'post_content' => '', 
     'post_status' => 'inherit' 
    ); 

    //If you want to insert into a post or custom posttype, then make $parent_post_id = 0 
    //Otherwise $parent_post_id = id of post/posttype 
    $attachment_id = wp_insert_attachment($attachment, $upload_file['file'], $parent_post_id); 
    if (!is_wp_error($attachment_id)) { 
     $attachment_data = wp_generate_attachment_metadata($attachment_id, $upload_file['file']); 
     wp_update_attachment_metadata($attachment_id, $attachment_data); 
    //1- get the url 
    $url = wp_get_attachment_url($id); 
    //2-get current logged in user ID 
    $user_id = get_current_user_id(); 
    add_user_meta($user_id, 'uploaded_attachments', $url); 
    }else{ 
     //Failed with message = $attachment_id->get_error_message() 

    } 
}else{ 
    //Error : file upload failed 
} 
0

Die wp API-Funktion, um dem Benutzer ein neues Feld hinzuzufügen, ist die Funktion "add_user_meta".

Meiner Meinung nach müssen Sie ein neues benutzerdefiniertes Feld mit der Funktion "add_user_meta" hinzufügen. Anschließend sollten Sie die hochgeladene Datei mit der Funktion "wp_insert_attachment" zur Medienbibliothek hinzufügen.

Lesen Sie die Formularwerte.

1 - Fügen Sie die hochgeladene Datei mit der Funktion "wp insert attachment" hinzu.

2 - Fügen Sie das Feld dem Benutzer mit der Funktion "add_user_meta" hinzu.

3 - Weisen Sie dem Benutzerfeld die Referenz-ID zu.

Dies sind die Dokumentationen Links: https://codex.wordpress.org/Function_Reference/add_user_meta

https://developer.wordpress.org/plugins/users/working-with-user-metadata

https://codex.wordpress.org/Function_Reference/wp_insert_attachment

Grüße, Ed.

Verwandte Themen