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 WP admin une fois sur place. Quelqu'un peut aider?
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 la première vérification de ['mime-type']
pour application/pdf
. Vous devez intercepter le processus de téléchargement à l'aide du crochet d'action wp_handle_upload
et modifier le dossier de téléchargement à cet endroit. 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.
vous pourriez envisager d'utiliser
if(get_post_mime_type($id) == 'application/pdf'){
...
}
pour vérifier les fichiers pdf.
http://codex.wordpress.org/Function_Reference/get_post_mime_type
Vous pouvez également jeter un coup d'oeil au code derrière la fonction wp_delete_attachment () et vous pouvez y accéder avec l'action delete attachment . Pour supprimer les fichiers, vous pouvez utiliser unlink ()