wp_handle_upload () – Wie lade ich ein Upload in ein benutzerdefiniertes Unterverzeichnis hoch?

wp_handle_upload () funktioniert für mich, lädt aber Dateien hoch wo es will (Uploads / Jahr / Monat).

Frage: Gibt es eine Möglichkeit, sie dazu zu bringen, Dateien in ein benutzerdefiniertes Verzeichnis hochzuladen (uploads / mycustomdir)? Oder gibt es eine andere function, die dies tun könnte?

Was ich versucht habe:

  1. php’s move_uploaded_file () (war nicht in der Lage, den Zielverzeichnisparameter zu ermitteln – dies ist für ein Plugin und ich brauche es für jeden zu arbeiten, unabhängig von ihrer Verzeichnisstruktur).

  2. https://yoast.com/smarter-upload-handling-wp-plugins

Ich habe diesen Code in die coredatei meines Plugins eingefügt. Nichts ist passiert. Aber ich sehe in den Kommentaren, dass dies für Leute funktioniert.

Bitte, wenn Sie eine Antwort haben, geben Sie eine vollständige Antwort. Ich kann $ _FILES [‘myfile’] bekommen. Welche Schritte müssen Sie unternehmen, um diese Datei zu uploads / mycustomfolder zu bringen?

Solutions Collecting From Web of "wp_handle_upload () – Wie lade ich ein Upload in ein benutzerdefiniertes Unterverzeichnis hoch?"

Sie können an der Idee arbeiten, dass Joost den upload_dir Filter bereitgestellt und verwendet, um den Upload-Pfad vorübergehend anderswo einzurichten.

 /** * Override the default upload path. * * @param array $dir * @return array */ function wpse_141088_upload_dir( $dir ) { return array( 'path' => $dir['basedir'] . '/mycustomdir', 'url' => $dir['baseurl'] . '/mycustomdir', 'subdir' => '/mycustomdir', ) + $dir; } 

Und dann ist es in der Praxis so einfach wie:

 // Register our path override. add_filter( 'upload_dir', 'wpse_141088_upload_dir' ); // Do our thing. WordPress will move the file to 'uploads/mycustomdir'. $result = wp_handle_upload( $_FILE['myfile'] ); // Set everything back to normal. remove_filter( 'upload_dir', 'wpse_141088_upload_dir' );