it-swarm.com.de

wp_handle_upload () - wie in Uploads in ein benutzerdefiniertes Unterverzeichnis hochgeladen wird

wp_handle_upload () funktioniert für mich, lädt aber Dateien hoch, wo es will (uploads/year/month).

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

Was ich versucht habe:

  1. move_uploaded_file () von php (konnte den Zielverzeichnisparameter nicht ermitteln - dies ist für ein Plugin und muss für alle funktionieren, unabhängig von ihrer Verzeichnisstruktur).

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

Ich habe diesen Code in die Kerndatei meines Plugins eingefügt. Nichts ist passiert. Aber ich sehe in den Kommentaren, dass dies für Menschen zu funktionieren scheint.

BITTE, wenn Sie eine Antwort haben, geben Sie eine vollständige. Ich kann $ _FILES ['myfile'] bekommen. Welche Schritte müssen von dort aus unternommen werden, damit diese Datei zu uploads/mycustomfolder wechselt?

4
CodeVirtuoso

Sie können an der Idee arbeiten, die Joost bereitgestellt hat, und mithilfe des Filters upload_dir den Upload-Pfad vorübergehend auf einen anderen Ort setzen.

/**
 * 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' );
8
TheDeadMedic