So ändern Sie das Upload-Verzeichnis in meinem Plugin-Uploader

Lesezeit: 2 Minuten

Ich habe ein Plugin entwickelt und in meinem Plugin gibt es einen benutzerdefinierten Medien-Uploader. Wenn ich eine Datei von meinem Plugin-Uploader hochlade, wird diese Datei hochgeladen und in der WordPress-Standardeinstellung gespeichert uploads/ Mappe.

Aber ich möchte, dass, wenn ich eine Datei von meinem Plugin-Uploader hochlade, diese Dateien in einen neuen Ordner innerhalb von WordPress Custom hochgeladen werden sollten uploads Ordner, also suche ich bei Google und fand diesen Code:

 <?php
     function upload_dir($dirs)                                    
{                                                             
        $dirs['subdir'] = '/my-uploads';                  
        $dirs['path'] = $dirs['basedir'] . '/my-uploads'; 
        $dirs['url'] = $dirs['baseurl'] . '/my-uploads';  

        return $dirs;                                         
}                                                             

add_filter('upload_dir', 'upload_dir');                       

   ?>

Jetzt werden alle Dateien, die hochgeladen werden (Beiträge, Seiten usw.), auch in diesem Plugin-Ordner gespeichert.

Ich möchte, dass nur die Dateien, die von meinem Plugin-Uploader hochgeladen werden, darin gespeichert werden my-folderund der Rest der Dateien sollte standardmäßig in WordPress gespeichert werden uploads Mappe…

Verwenden Sie direkt vor dem Upload-Code

add_filter('upload_dir', 'upload_dir'); 

Verwenden Sie dann nach dem Hochladen des Codes:

remove_filter('upload_dir', 'upload_dir'); 

Auf diese Weise funktioniert der Filter nur für Ihre Plugin-Uploads und nicht an anderen Stellen.

  • Dadurch werden Dateien wieder im Standard-Upload-Ordner gespeichert, nicht im Plugin-Ordner …

    – Asma Zafar

    2. Juni 2016 um 12:52 Uhr

  • Könntest du einen Auszug deines Codes posten? Was normalerweise funktionieren sollte, ist: add_filter, wp_handle_upload, remove_filter.

    – Marcel deHoog

    2. Juni 2016 um 13:01 Uhr

  • was meinst du mit wp_handle_upload?

    – Asma Zafar

    2. Juni 2016 um 13:09 Uhr

  • Ich habe diese Funktion nicht verwendet … wofür wird sie verwendet?

    – Asma Zafar

    2. Juni 2016 um 13:46 Uhr

  • @AasmaZafar Das ist eine gute Antwort. Hast du es ausprobiert? Es ist besser, wenn Sie den Code zeigen können, der die Upload-Funktionalität implementiert.

    – wpclevel

    6. Juni 2016 um 16:42 Uhr

Benutzer-Avatar
david_nash

Möglicherweise müssen Sie die Dateiverarbeitung selbst mit einfachem PHP durchführen. Versuchen Sie Folgendes, wenn Sie das Formular verarbeiten:

$uploaddir="/path/to/plugin/uploads/";
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

if( move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile))
    echo 'success!';
else
    echo 'fail!';

und verwenden print_r($_FILES); zu debuggen.

Seien Sie jedoch sehr, sehr vorsichtig – Sie schaffen möglicherweise ein Sicherheitsrisiko. Weitere Informationen dazu finden Sie unter Secure PHP File Upload Script.

Es könnte mit den .htaccess-Einstellungen zu tun haben. Die .htaccess-Datei setzt Grenzen, was Sie tun können. Oder es könnte eine andere Einstellung außerhalb Ihrer Datei sein. Haben Sie versucht, dies auf mehr als einem Server auszuführen, um es zu testen?

Hier ist eine Arbeit Lösung.

add_filter('upload_dir', 'my_upload_dir');
$upload = wp_upload_dir();
remove_filter('upload_dir', 'my_upload_dir');

funcion my_upload_dir($upload) {
  $upload['subdir'] = '/sub-dir-to-use' . $upload['subdir'];
  $upload['path']       = $upload['basedir'] . $upload['subdir'];
  $upload['url']        = $upload['baseurl'] . $upload['subdir'];
  return $upload;
}

1382730cookie-checkSo ändern Sie das Upload-Verzeichnis in meinem Plugin-Uploader

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy