So ändern Sie das Upload-Verzeichnis in wp_handle_upload


9

Ich versuche herauszufinden, wie die Funktion wp_handle_upload für ein benutzerdefiniertes Plugin verwendet wird, damit ich mein eigenes Upload-Verzeichnis angeben kann. Der bisherige Code nimmt eine Datei von meiner Plugin-Einstellungsseite und lädt sie mit Jahr und Monat in den Ordner hoch.

Ich bin auf diesen Link gestoßen, von dem ich dachte, dass er einige Hinweise hat - http://yoast.com/smarter-upload-handling-wp-plugins

if(strtolower($_SERVER['REQUEST_METHOD']) == "post"){

     $overrides = array('test_form' => false);
     $file = wp_handle_upload($_FILES['binaryFile'], $overrides);

     echo "<pre>" . print_r($file, true) . "</pre>";
}

Wie kann ich in ein Verzeichnis meiner Wahl hochladen?

Jede Hilfe sehr geschätzt Jungs.

Antworten:


5

Hier ist ein vollständiges Beispiel dafür, wie wir es in Easy Digital Downloads machen:

/**
 * Set Upload Directory
 *
 * Sets the upload dir to edd. This function is called from
 * edd_change_downloads_upload_dir()
 *
 * @since 1.0
 * @return array Upload directory information
*/
function edd_set_upload_dir( $upload ) {
    $upload['subdir'] = '/edd' . $upload['subdir'];
    $upload['path'] = $upload['basedir'] . $upload['subdir'];
    $upload['url']  = $upload['baseurl'] . $upload['subdir'];
    return $upload;
}


/**
 * Change Downloads Upload Directory
 *
 * Hooks the edd_set_upload_dir filter when appropriate. This function works by
 * hooking on the WordPress Media Uploader and moving the uploading files that
 * are used for EDD to an edd directory under wp-content/uploads/ therefore,
 * the new directory is wp-content/uploads/edd/{year}/{month}. This directory
 * provides protection to anything uploaded to it.
 *
 * @since 1.0
 * @global $pagenow
 * @return void
 */
function edd_change_downloads_upload_dir() {
    global $pagenow;

    if ( ! empty( $_REQUEST['post_id'] ) && ( 'async-upload.php' == $pagenow || 'media-upload.php' == $pagenow ) ) {
        if ( 'download' == get_post_type( $_REQUEST['post_id'] ) ) {
            add_filter( 'upload_dir', 'edd_set_upload_dir' );
        }
    }
}
add_action( 'admin_init', 'edd_change_downloads_upload_dir', 999 );

Beachten Sie, dass wir das Upload-Verzeichnis nur ändern, wenn Sie Dateien von unserer Seite "Benutzerdefinierter Beitragstyp" herunterladen. Sie müssen es für die Einstellungsseite Ihres Plugins anpassen.
Pippin

Es fehlt "]" mit$upload['url'
Mario Radomanana

1

Ich erinnere mich nicht, dass ich dies in der Praxis genau getan habe, aber die meisten (alle?) Upload-Pfadbehandlungen werden durchgeführt wp_upload_dir(), bei denen upload_dirFilter auf zurückgegebene Informationen angewendet werden. Sie sollten versuchen, es für die Dauer der Ausführung Ihres Codes zu filtern und die Pfade an den gewünschten Speicherort anzupassen.


Diese Methode ist einfach zu implementieren. Ein Beispiel finden Sie unter diesem Link ( codex.wordpress.org/Plugin_API/Filter_Reference/… .
AlanP
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.