Dossier de téléchargement spécifique pour les PDF au type de message personnalisé dans WP multisite

12

Je dois filtrer les téléchargements dans un dossier spécifique pour un type de publication personnalisé appelé "document" uniquement pour les fichiers PDF.

Jusqu'à présent, j'ai:

function custom_upload_directory( $args ) {
$base_directory = '/home/xxx/my_uploadfolder';
$base_url = 'http://xxxx/wp-content/uploads/my_uploadfolder';

$id = $_REQUEST['post_id'];
$parent = get_post( $id )->post_parent;
// Check the post-type of the current post

if( "document" == get_post_type( $id ) || "document" == get_post_type( $parent ) ) {
    $args['path'] = $base_directory;
    $args['url']  = $base_url;
    $args['basedir'] = $base_directory;
    $args['baseurl'] = $base_url;

}

return $args;
}
add_filter( 'upload_dir', 'custom_upload_directory' );

Cela fonctionne, mais avec quelques problèmes:: tout type de fichier est redirigé dans my_uploadfolder. De plus, je ne peux pas supprimer ces fichiers de l'administrateur WP une fois sur place. Quelqu'un peut aider?

    
posée Gerald 31.01.2013 - 15:22

2 réponses

2

La raison pour laquelle vous rencontrez des problèmes ici est que vous appliquez un filtre universel à upload_dir . Plutôt que de procéder ainsi, utilisez un filtre conditionnel pour upload_dir après avoir d'abord vérifié ['mime-type'] pour application/pdf . Vous devez intercepter le processus de téléchargement au point d’accrochage wp_handle_upload action et modifier le dossier de téléchargement à cet emplacement. Ce que vous avez posté va dans la bonne direction, mais vous devez travailler avec les données $_POST entrantes et y appliquer le filtre en recherchant le téléchargement des fichiers ['mime-type'] que WordPress stocke pendant le processus de téléchargement.

    
réponse donnée Brian 29.04.2013 - 16:35
1

vous pourriez envisager d'utiliser

if(get_post_mime_type($id) == 'application/pdf'){
   ...
}

pour rechercher des fichiers pdf.

enlace

Vous pouvez également consulter le code qui se trouve derrière la fonction wp_delete_attachment () et y accéder avec l'action supprimer la pièce jointe . Pour supprimer les fichiers, vous pouvez utiliser unlink ()

.

enlace

    
réponse donnée birgire 07.02.2013 - 10:26

Lire d'autres questions sur les étiquettes