Bonjour,

J'ai effectuée enormément de recherche sur ce forum et sur une multitude d'autre sans résultat ...

Je vous expose mon problème :

J'ai crée un plugin WP qui contient dans l'administration, en Back-office, un formulaire.

Sur ce formulaire j'ai plusieurs champs.
Ceux me posant particulièrement problème sont des champs ou je dois faire des uploads de fichiers.

Pour faire ces uploads j'ai souhaitée utiliser l'uploadeur de WP jusque là je n'ai pas de problème. L'uploadeur me propose bien d'envoyer un fichier ou de choisir parmis la bibliothèque et me renvoit bien le lien vers mon fichier sélectionné.

Mon problème vient du fait que je souhaiterai limité le type de fichiers à l’envoi dans l'uploadeur en fonction du champs dans lequel je fais appel à lui.
Par exemple : Je suis dans le champs "joindre une image" je souhaiterai que l'uploadeur ne m'autorise le téléchargement pour les fichiers de type image. Idem si je suis sur un champs me proposant de "joindre un pdf" etc ...

Bref, mes recherches mon amener à l'utilisation de ce hook :
add_action('upload_mimes', 'ma_fonction');

et à cette fonction pour filtrer les types de fichiers :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
function ma_fonction($mime_types)
{  
$mime_types = array(
'pdf' => 'application/pdf',
'doc|docx' => 'application/msword',
);
 
return $mime_types;
}
J'ai donc placé ce code dans mon plugin qui fonctionne tellement bien qu'il me bloque le téléchargement sur tous les formulaires ...

Je ne souhaite pas que ce code s’exécute tout le temps, uniquement quand je fait appel a un champs autorisant le téléchargement de pdf ou de .doc

Je me suis mise a essayer d'appeler le hook via un appel ajax.
L'idée est :
En cliquant sur le lien 'telecharger un fichier' l'Ajax appel un fichier php contenant une fonction qui contient le hook et la fonction !!!

Ma fonction JS
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
<script type="text/javascript" >
 
jQuery(document).ready(function($) {
 
jQuery('#champ').click(function() {
 
		$.ajax({
			   type: "GET",
			   url: ajaxurl,
			   data: "action=uploadtest&data=plop",
			   async: false,
			   success: function(data){
			   }
			 });
 
		tb_show('Ma box', 'media-upload.php?type=image&amp;TB_iframe=true');
});
});
</script>
Qui donne :

add_action( 'wp_ajax_uploadtest', 'uploadtest' );

function uploadtest() {
add_action('upload_mimes', 'untest');

}

function untest($mime_types)
{
$mime_types = array(
'pdf' => 'application/pdf',
'doc|docx' => 'application/msword',
);
return $mime_types;
}
Tous fonctionne au niveaux des appels, le problème est que le add_action semble n'avoir aucun effet ... je peux télécharger tout type de fichier alors que j'aurais voulu qu'il n'autorise que les pdf et doc docx...

Si quelqu'un peut m'aider ...
Merci d'avance

ps: soyez indulgent je débute en WP =)