2016-06-02 12 views
6

Ho sviluppato un plugin e nel mio plugin c'è un uploader di media personalizzato. Quando carico qualsiasi file dal plugin uploader, quel file viene caricato e salvato nella cartella predefinita di WordPress uploads/.Come cambiare la directory di caricamento nel mio plugin uploader

Ma voglio che quando caricamento di file dal mio plug-in uploader i file devono essere caricati in una nuova cartella all'interno di Wordpress personalizzato uploads cartella in modo che cerco da parte di Google e abbiamo trovato questo codice:

<?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');      

    ?> 

Ora tutti i file che vengono caricati da (post, pagine ecc.) sono anche memorizzati in quella cartella di plugin.

voglio che solo i file che vengono caricati dal mio plugin di caricamento devono essere salvate in quel my-folder, e resto dei file devono essere salvati nella cartella di WordPress predefinita uploads ...

risposta

6

Proprio prima del codice caricando, utilizzare

add_filter('upload_dir', 'upload_dir'); 

Poi, dopo il codice di caricamento, utilizzare:

remove_filter('upload_dir', 'upload_dir'); 

in questo modo, il filtro funziona solo per il tuo plugin si carica e non su altri luoghi.

+0

In questo modo, si sta salvando i file di nuovo in uploads predefinite non cartella nella cartella Plugin ... –

+0

Potresti postare un estratto del codice? Ciò che normalmente dovrebbe funzionare è: add_filter, wp_handle_upload, remove_filter. –

+0

cosa intendi per wp_handle_upload? –

2

Potrebbe essere necessario gestire l'elaborazione dei file utilizzando semplicemente PHP. Quando si elabora la forma, provate questo:

$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!'; 

e utilizzare print_r($_FILES); per eseguire il debug.

Stai molto attento però: stai potenzialmente creando un rischio per la sicurezza. vedi Secure PHP File Upload Script per maggiori informazioni su questo.

2

Potrebbe avere a che fare con le impostazioni .htaccess. Il file .htaccess crea limiti su ciò che puoi fare. O potrebbe essere qualche altra impostazione al di fuori del tuo file. Hai provato a farlo su più di un server per testarlo?

2

Ecco un lavoro solution.

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; 
} 
Problemi correlati