{"id":24893,"date":"2021-05-27T14:33:00","date_gmt":"2021-05-27T11:33:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=24893"},"modified":"2021-10-18T02:13:13","modified_gmt":"2021-10-17T23:13:13","slug":"comment-integrer-le-telechargement-de-fichiers-ajax-dans-wordpress","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fr\/comment-integrer-le-telechargement-de-fichiers-ajax-dans-wordpress\/","title":{"rendered":"Comment int\u00e9grer le t\u00e9l\u00e9chargement de fichiers Ajax dans WordPress"},"content":{"rendered":"<p>Voulez-vous impl\u00e9menter le t\u00e9l\u00e9chargement de fichiers Ajax dans WordPress\u00a0? Parfois, vous devez effectuer une t\u00e2che qui t\u00e9l\u00e9charge un fichier via Ajax. Dans cet article, nous \u00e9tudions comment effectuer le t\u00e9l\u00e9chargement de fichiers Ajax dans WordPress.<\/p>\n<p>L&rsquo;un des avantages du t\u00e9l\u00e9chargement de fichiers via Ajax est qu&rsquo;il r\u00e9duit la charge de votre serveur. Votre page ne se rechargera pas ce qui \u00e9conomise des appels suppl\u00e9mentaires vers un serveur et donc la bande passante. Il ajoute \u00e9galement une meilleure exp\u00e9rience utilisateur sur votre site Web.<\/p>\n<p>Normalement, lorsque nous travaillons avec Ajax, nous appelons l&rsquo;URL et transmettons des donn\u00e9es ou obtenons des donn\u00e9es \u00e0 partir de l&rsquo;URL sp\u00e9cifi\u00e9e. WordPress a une mani\u00e8re l\u00e9g\u00e8rement diff\u00e9rente d&rsquo;effectuer des op\u00e9rations Ajax. Dans WordPress, nous appelons l&rsquo;URL mais le code que nous \u00e9crivons pour traiter les donn\u00e9es ira dans la fonction. Ensuite, cette fonction doit \u00eatre mapp\u00e9e avec la valeur &lsquo;action&rsquo; transmise dans les param\u00e8tres Ajax. Embrouill\u00e9? Voyons-le en action.<\/p>\n<h3>T\u00e9l\u00e9chargement de fichiers Ajax dans WordPress<\/h3>\n<p>Pour commencer, vous avez besoin d&rsquo;un formulaire avec le fichier d&rsquo;entr\u00e9e. Nous donnons un appel Ajax sur la s\u00e9lection d&rsquo;un fichier et t\u00e9l\u00e9chargeons le fichier sur un serveur. Pour cr\u00e9er un formulaire, ajoutez le code HTML ci-dessous \u00e0 votre mod\u00e8le de page.<\/p>\n<pre><code>&lt;form class=\"fileUpload\" enctype=\"multipart\/form-data\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;div class=\"form-group\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;label&gt;&lt;?php _e('Choose File:'); ?&gt;&lt;\/label&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input type=\"file\" id=\"file\" accept=\"image\/*\" \/&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n&lt;\/form&gt;<\/code><\/pre>\n<p>Ensuite, vous devez donner un appel Ajax sur l&rsquo;\u00e9v\u00e9nement de modification de l&rsquo;entr\u00e9e du fichier. Comme nous transmettons le contenu d&rsquo;un fichier \u00e0 l&rsquo;Ajax, votre code sera l\u00e9g\u00e8rement diff\u00e9rent du code jQuery standard de <a href=\"https:\/\/codex.wordpress.org\/AJAX_in_Plugins\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WordPress Ajax<\/a>.<\/p>\n<h4>Inclure le fichier JS dans WordPress<\/h4>\n<p>Commen\u00e7ons par inclure le fichier JS dans un environnement WordPress. Ce code ira dans un <code>functions.php<\/code>fichier ou dans un plugin sp\u00e9cifique au site.<\/p>\n<pre><code>function aw_scripts() {\n\u00a0\u00a0\u00a0\u00a0\/\/ Register the script\n\u00a0\u00a0\u00a0\u00a0wp_register_script( 'aw-custom', get_stylesheet_directory_uri(). '\/js\/custom.js', array('jquery'), '1.1', true );\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\/\/ Localize the script with new data\n\u00a0\u00a0\u00a0\u00a0$script_data_array = array(\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'ajaxurl' =&gt; admin_url( 'admin-ajax.php' ),\n\u00a0\u00a0\u00a0\u00a0);\n\u00a0\u00a0\u00a0\u00a0wp_localize_script( 'aw-custom', 'aw', $script_data_array );\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\/\/ Enqueued script with localized data.\n\u00a0\u00a0\u00a0\u00a0wp_enqueue_script( 'aw-custom' );\n}\n\u00a0\nadd_action( 'wp_enqueue_scripts', 'aw_scripts' );<\/code><\/pre>\n<h4>T\u00e9l\u00e9charger le fichier sur le serveur<\/h4>\n<p>Vous \u00eates pr\u00eat avec le formulaire et le fichier JS. Maintenant, ajoutez le code ci-dessous dans le fichier JS qui enverra le contenu du fichier c\u00f4t\u00e9 serveur via Ajax.<\/p>\n<p><strong>custom.js<\/strong><\/p>\n<pre><code>jQuery(function($) {\n\u00a0\u00a0\u00a0\u00a0$('body').on('change', '#file', function() {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this = $(this);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0file_data = $(this).prop('files')[0];\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0form_data = new FormData();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0form_data.append('file', file_data);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0form_data.append('action', 'file_upload');\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$.ajax({\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0url: aw.ajaxurl,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0type: 'POST',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0contentType: false,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0processData: false,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0data: form_data,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0success: function (response) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this.val('');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0alert('File uploaded successfully.');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0});\n\u00a0\u00a0\u00a0\u00a0});\u00a0\u00a0\u00a0 \n});<\/code><\/pre>\n<p>La partie importante du code ci-dessus est que nous ajoutons une action &lsquo;file_upload&rsquo; \u00e0 l&rsquo;objet form_data. Nous utiliserons cette action &lsquo;file_upload&rsquo; pour continuer avec les donn\u00e9es du formulaire.<\/p>\n<p>Dans le <code>functions.php<\/code>, mappez cette action avec l&rsquo;Ajax comme suit\u00a0:<\/p>\n<pre><code>add_action( 'wp_ajax_file_upload', 'file_upload_callback' );\nadd_action( 'wp_ajax_nopriv_file_upload', 'file_upload_callback' );<\/code><\/pre>\n<p>Si vous \u00e9crivez ce code dans un plugin, vous n&rsquo;avez pas besoin d&rsquo;\u00e9crire une deuxi\u00e8me instruction. Ici, aux &lsquo;wp ajax_&rsquo; et &lsquo;wp_ajax_nopriv &lsquo;, nous ajoutons la valeur de l&rsquo;action qui est &lsquo;file_upload&rsquo;. Le deuxi\u00e8me param\u00e8tre &lsquo;file_upload_callback&rsquo; est la m\u00e9thode de rappel qui aura le code r\u00e9el pour le t\u00e9l\u00e9chargement de fichier.<\/p>\n<pre><code>function file_upload_callback() {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$arr_img_ext = array('image\/png', 'image\/jpeg', 'image\/jpg', 'image\/gif');\n\u00a0\u00a0\u00a0\u00a0if (in_array($_FILES['file']['type'], $arr_img_ext)) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$upload = wp_upload_bits($_FILES[\"file\"][\"name\"], null, file_get_contents($_FILES[\"file\"][\"tmp_name\"]));\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/$upload['url'] will gives you uploaded file path\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0wp_die();\n}<\/code><\/pre>\n<p>J&rsquo;utilise une m\u00e9thode <a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/wp_upload_bits\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_upload_bits<\/a> pour t\u00e9l\u00e9charger un fichier sur un serveur. Cette m\u00e9thode stocke directement un fichier dans le r\u00e9pertoire wp-content\/uploads.<\/p>\n<p>Allez-y et essayez de t\u00e9l\u00e9charger un fichier. Votre fichier doit \u00eatre t\u00e9l\u00e9charg\u00e9 dans le dossier wp-content\/uploads\/. Notez que vous trouverez votre fichier dans le dossier du mois en cours du r\u00e9pertoire des t\u00e9l\u00e9chargements.<\/p>\n<h3>T\u00e9l\u00e9charger plusieurs fichiers \u00e0 l&rsquo;aide d&rsquo;Ajax dans WordPress<\/h3>\n<p>Jusqu&rsquo;\u00e0 pr\u00e9sent, nous avons discut\u00e9 du t\u00e9l\u00e9chargement d&rsquo;un seul fichier via Ajax. Il peut arriver que vous souhaitiez t\u00e9l\u00e9charger plusieurs fichiers \u00e0 l&rsquo;aide d&rsquo;Ajax. Voyons comment y parvenir.<\/p>\n<p>Pour t\u00e9l\u00e9charger plusieurs fichiers, vous devez apporter de l\u00e9g\u00e8res modifications au code HTML, JS et PHP ci-dessus.<\/p>\n<p>HTML fournit un attribut \u00ab\u00a0multiple\u00a0\u00bb qui permet \u00e0 un utilisateur de s\u00e9lectionner plusieurs fichiers \u00e0 l&rsquo;entr\u00e9e du fichier.<\/p>\n<p><strong>Code HTML<\/strong><\/p>\n<pre><code>&lt;form class=\"fileUpload\" enctype=\"multipart\/form-data\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;div class=\"form-group\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;label&gt;&lt;?php _e('Choose File:'); ?&gt;&lt;\/label&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input type=\"file\" id=\"file\" accept=\"image\/*\" multiple \/&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n&lt;\/form&gt;<\/code><\/pre>\n<p>En tant qu&rsquo;utilisateur qui va s\u00e9lectionner plusieurs fichiers, nous devons modifier le code JavaScript qui parcourt chaque fichier et en construit un tableau.<\/p>\n<p><strong>custom.js<\/strong><\/p>\n<pre><code>jQuery(function($) {\n\u00a0\u00a0\u00a0\u00a0$('body').on('change', '#file', function() {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this = $(this);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0file_obj = $this.prop('files');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0form_data = new FormData();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0for(i=0; i&lt;file_obj.length; i++) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0form_data.append('file[]', file_obj[i]);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0form_data.append('action', 'file_upload');\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$.ajax({\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0url: aw.ajaxurl,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0type: 'POST',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0contentType: false,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0processData: false,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0data: form_data,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0success: function (response) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this.val('');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0alert('File(s) uploaded successfully.');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0});\n\u00a0\u00a0\u00a0\u00a0});\n});<\/code><\/pre>\n<p>Et enfin, dans la fonction de rappel Ajax, nous parcourons le tableau de fichiers et t\u00e9l\u00e9chargeons chaque fichier sur un serveur.<\/p>\n<pre><code>function file_upload_callback() {\n\u00a0\u00a0\u00a0\u00a0$arr_img_ext = array('image\/png', 'image\/jpeg', 'image\/jpg', 'image\/gif');\n\u00a0\n\u00a0\u00a0\u00a0\u00a0for($i = 0; $i &lt; count($_FILES['file']['name']); $i++) {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (in_array($_FILES['file']['type'][$i], $arr_img_ext)) {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$upload = wp_upload_bits($_FILES['file']['name'][$i], null, file_get_contents($_FILES['file']['tmp_name'][$i]));\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/$upload['url'] will gives you uploaded file path\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0wp_die();\n}<\/code><\/pre>\n<p>J&rsquo;esp\u00e8re que vous avez entendu parler du t\u00e9l\u00e9chargement de fichiers Ajax dans WordPress. J&rsquo;aimerais entendre vos pens\u00e9es et suggestions dans la section des commentaires ci-dessous.<\/p>\n<h4>Articles Li\u00e9s<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/comment-charger-des-articles-wordpress-avec-ajax\/\" title=\"Comment charger un article WordPress avec AJAX\">Comment charger un article WordPress avec AJAX<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/comment-utiliser-jquery-ajax-dans-wordpress\/\" title=\"Comment utiliser jQuery Ajax dans WordPress\">Comment utiliser jQuery Ajax dans WordPress<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/glisser-deposer-le-telechargement-de-fichiers-a-l-aide-de-javascript-et-php\/\" title=\"Glisser-d\u00e9poser le t\u00e9l\u00e9chargement de fichiers \u00e0 l&#039;aide de JavaScript et PHP\">Glisser-d\u00e9poser le t\u00e9l\u00e9chargement de fichiers \u00e0 l&rsquo;aide de JavaScript et PHP<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vous cherchez \u00e0 int\u00e9grer le t\u00e9l\u00e9chargement de fichiers Ajax dans WordPress ? Dans cet article, je prends un exemple et vous explique comment t\u00e9l\u00e9charger le fichier en utilisant Ajax dans<\/p>\n","protected":false},"author":1,"featured_media":21665,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[608],"tags":[844],"class_list":["post-24893","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized-4","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts\/24893","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/comments?post=24893"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts\/24893\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/media\/21665"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/media?parent=24893"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/categories?post=24893"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/tags?post=24893"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}