{"id":28694,"date":"2021-05-27T14:50:00","date_gmt":"2021-05-27T11:50:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=28694"},"modified":"2021-10-17T04:36:37","modified_gmt":"2021-10-17T01:36:37","slug":"hur-man-integrerar-ajax-filoverforing-i-wordpress","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/sv\/hur-man-integrerar-ajax-filoverforing-i-wordpress\/","title":{"rendered":"Hur man integrerar Ajax-fil\u00f6verf\u00f6ring i WordPress"},"content":{"rendered":"<p>Vill du implementera Ajax-fil\u00f6verf\u00f6ring i WordPress? Ibland m\u00e5ste du utf\u00f6ra en uppgift som laddar upp en fil via Ajax. I den h\u00e4r artikeln studerar vi hur man g\u00f6r Ajax-fil\u00f6verf\u00f6ring i WordPress.<\/p>\n<p>En f\u00f6rdel med att ladda upp filer via Ajax \u00e4r att det minskar din serverbelastning. Din sida laddas inte om vilket sparar extra samtal till en server och s\u00e5 bandbredden. Det ger ocks\u00e5 en b\u00e4ttre anv\u00e4ndarupplevelse p\u00e5 din webbplats.<\/p>\n<p>Normalt n\u00e4r vi arbetar med Ajax ringer vi till URL och skickar data till eller f\u00e5r data fr\u00e5n den angivna URL: n. WordPress har ett n\u00e5got annat s\u00e4tt att utf\u00f6ra Ajax-operationer. I WordPress ringer vi till webbadressen men koden vi skriver f\u00f6r att bearbeta data kommer att ing\u00e5 i funktionen. D\u00e5 m\u00e5ste denna funktion kartl\u00e4ggas med &#8217;action&#8217; -v\u00e4rdet skickat i Ajax-parametrar. F\u00f6rvirrad? L\u00e5t oss se det i aktion.<\/p>\n<h3>Ajax-fil\u00f6verf\u00f6ring i WordPress<\/h3>\n<p>F\u00f6r att komma ig\u00e5ng beh\u00f6ver du ett formul\u00e4r med filinmatningen. Vi ger ett Ajax-samtal om valet av en fil och laddar upp filen till en server. F\u00f6r att skapa ett formul\u00e4r, l\u00e4gg till nedanst\u00e5ende HTML i din sidmall.<\/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>D\u00e4refter m\u00e5ste du ringa ett Ajax-samtal om \u00e4ndringsh\u00e4ndelsen f\u00f6r filinmatning. N\u00e4r vi skickar ett filinneh\u00e5ll till Ajax kommer din kod att vara n\u00e5got annorlunda j\u00e4mf\u00f6rt med vanlig jQuery-kod f\u00f6r <a href=\"https:\/\/codex.wordpress.org\/AJAX_in_Plugins\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WordPress Ajax<\/a>.<\/p>\n<h4>Inkludera JS-fil i WordPress<\/h4>\n<p>L\u00e5t oss f\u00f6rst inkludera JS-filen i en WordPress-milj\u00f6. Den h\u00e4r koden g\u00e5r in i <code>functions.php<\/code>filen eller i ett platsspecifikt plugin.<\/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>Ladda upp fil p\u00e5 servern<\/h4>\n<p>Du \u00e4r redo med formul\u00e4ret och JS-filen. L\u00e4gg nu till koden nedan i JS-filen som skickar filinneh\u00e5ll till serversidan 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>Den viktiga delen av koden ovan \u00e4r att vi l\u00e4gger till en \u00e5tg\u00e4rd &#8217;file_upload&#8217; till form_data-objektet. Vi kommer att anv\u00e4nda denna &#8217;file_upload&#8217; -\u00e5tg\u00e4rd f\u00f6r att forts\u00e4tta med formul\u00e4rdata.<\/p>\n<p>I <code>functions.php<\/code>, karta denna \u00e5tg\u00e4rd med Ajax p\u00e5 f\u00f6ljande s\u00e4tt:<\/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>Om du skriver den h\u00e4r koden i ett plugin beh\u00f6ver du inte skriva ett andra uttalande. H\u00e4r till &#8217;wp ajax_&#8217; och &#8217;wp_ajax_nopriv &#8217; l\u00e4gger vi till \u00e5tg\u00e4rdsv\u00e4rdet som \u00e4r &#8217;file_upload&#8217;. Den andra parametern &#8217;file_upload_callback&#8217; \u00e4r \u00e5teruppringningsmetoden som har den faktiska koden f\u00f6r fil\u00f6verf\u00f6ring.<\/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>Jag anv\u00e4nder en <a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/wp_upload_bits\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_upload_bits-<\/a> metod f\u00f6r att ladda upp filen p\u00e5 en server. Denna metod lagrar en fil direkt i wp-content \/ uploads-katalogen.<\/p>\n<p>Forts\u00e4tt och f\u00f6rs\u00f6k ladda upp en fil. Din fil b\u00f6r laddas upp till wp-content \/ uppladdningar \/ mappen. Observera att du hittar din fil i den aktuella m\u00e5nadskatalogen med uppladdningskatalogen.<\/p>\n<h3>Ladda upp flera filer med Ajax i WordPress<\/h3>\n<p>Hittills har vi diskuterat uppladdning av en enda fil via Ajax. Det kan finnas en situation n\u00e4r du vill ladda upp flera filer med Ajax. L\u00e5t oss se hur man uppn\u00e5r det.<\/p>\n<p>F\u00f6r att ladda upp flera filer m\u00e5ste du g\u00f6ra sm\u00e5 f\u00f6r\u00e4ndringar i ovanst\u00e5ende HTML-, JS- och PHP-kod.<\/p>\n<p>HTML tillhandah\u00e5ller ett &quot;flera&quot; attribut som till\u00e5ter en anv\u00e4ndare att v\u00e4lja flera filer p\u00e5 filinmatning.<\/p>\n<p><strong>HTML-kod<\/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>Som anv\u00e4ndare som ska v\u00e4lja flera filer m\u00e5ste vi \u00e4ndra JavaScript-koden som slingrar genom varje fil och bygger en matris av den.<\/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>Och slutligen, i Ajax \u00e5teruppringningsfunktion, slingrar vi igenom filmatrisen och laddar upp varje fil p\u00e5 en server.<\/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>Jag hoppas att du fick veta om Ajax-fil\u00f6verf\u00f6ringen i WordPress. Jag skulle vilja h\u00f6ra dina tankar och f\u00f6rslag i kommentarsektionen nedan.<\/p>\n<h4>relaterade artiklar<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/hur-man-laddar-wordpress-inlagg-med-ajax\/\" title=\"Hur man laddar WordPress-inl\u00e4gg med AJAX\">Hur man laddar WordPress-inl\u00e4gg med AJAX<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/hur-man-anvander-jquery-ajax-i-wordpress\/\" title=\"Hur man anv\u00e4nder jQuery Ajax i WordPress\">Hur man anv\u00e4nder jQuery Ajax i WordPress<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/dra-och-slapp-filoverforing-med-javascript-och-php\/\" title=\"Dra och sl\u00e4pp fil\u00f6verf\u00f6ring med JavaScript och PHP\">Dra och sl\u00e4pp fil\u00f6verf\u00f6ring med JavaScript och PHP<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vill du integrera Ajax-fil\u00f6verf\u00f6ring i WordPress? I den h\u00e4r artikeln tar jag ett exempel och f\u00f6rklarar hur du laddar upp filen med Ajax i<\/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":[614],"tags":[850],"class_list":["post-28694","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized-10","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts\/28694","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/comments?post=28694"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts\/28694\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/media\/21665"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/media?parent=28694"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/categories?post=28694"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/tags?post=28694"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}