
🔧 WP All Import: hur du samlar alla inläggsbilder i ett enda galleri
Importerade hundra inlägg genom WP All Import, och bilderna spreds slumpmässigt över innehållet: utsträckta till full bredd på vissa ställen, ihopklämda mot text på andra, och hängande som trasiga länkar på ytterligare andra. Att gå igenom varje inlägg manuellt är en bortkastad kväll.
Det finns ett sätt att samla allt i ett enda galleri. Automatiskt, utan manuell innehållsredigering. Metoden fungerar både för färska importer och inlägg som laddades upp för en månad sedan. Nedan finns två tillvägagångssätt: det enkla (i farten, via pmxi_gallery_image-hooken) och i efterhand (med massuppdatering). Båda testade på WP All Import 4.9+.
💡 Snabb översikt:
- Förbered CSV eller XML: bildlänkar som fullständiga webbadresser, en per rad
- I importmallen, konfigurera Bilder-sektionen och ange fältet med bilder
- Lägg till
pmxi_gallery_image-hooken ifunctions.php, galleriet sätts ihop under importen - För gamla inlägg: en funktion för att ersätta
<img>med galleriets shortcode och massuppdatera
Så förbereder du bilder för import
Innan du kör importen måste bildlänkarna vara i rätt format. WP All Import laddar bara ner bilder om webbadressen är fullständig, direkt och pekar på en fil, inte en HTML-sida.
Anta att galleriet på den gamla sajten ser ut så här:
1 <a href="/cache/images/photo1.jpg" data-lightbox="group:1" title="Photo 1"> 2 <img src="/cache/images/photo1_thumb.jpg" alt="Photo 1"> 3 </a> 4 <a href="/cache/images/photo2.jpg" data-lightbox="group:1" title="Photo 2"> 5 <img src="/cache/images/photo2_thumb.jpg" alt="Photo 2"> 6 </a>
Efter parsning, i CSV-filen för import, måste länkarna bli fullständiga webbadresser, en per rad, utan HTML-omslag:
1 http://newsite.com/files/photo1.jpg 2 http://newsite.com/files/photo2.jpg
Där http://newsite.com är domänen för sajten du importerar till. Kritiskt: om länkarna är relativa eller pekar på den gamla domänen, kommer WP All Import inte att hämta filerna och inte ladda upp dem till mediebiblioteket.
Länkarna i inläggets brödtext måste matcha en-till-en med dem du matar till pluginet för uppladdning. Annars kommer vissa <img>-taggar efter importen att finnas kvar med gamla webbadresser och inte inkluderas i galleriet.
Konfigurera importmallen i WP All Import
I pluginets gränssnitt, gå till importmallen. Huvudsektionen här är Bilder. Den ser ut så här:

I Bilder-sektionen anger du fältet som innehåller bildlänkar. Vanligtvis är detta en separat CSV-cell (till exempel gallery_images), där länkar listas med en avgränsare, som standard |:
1 http://newsite.com/files/photo1.jpg | http://newsite.com/files/photo2.jpg | http://newsite.com/files/photo3.jpg
WP All Import kommer att tolka strängen, ladda ner varje bild och lägga till den i WordPress mediebibliotek. Men bilderna är tills vidare bara bifogade till inlägget som bilagor. Vi sätter ihop galleriet separat.
Se till att kontrollera hur pluginet hanterar uppladdningen. Klicka på Förhandsgranska & Testa, sedan Kör test. En grön bock bredvid antalet bilder betyder att allt är korrekt konfigurerat. Ett rött kryss betyder att du ska kontrollera webbadresserna: de måste vara fullständiga och direkta.
Innan du startar importen, ladda upp bildfilerna till mappen files i sajtroten, om pluginet hämtar bilder från servern och inte från externa webbadresser.
Så sätter du ihop galleriet i farten: pmxi_gallery_image-hooken
Det renaste sättet är att sätta ihop galleriet direkt under importen. WP All Import tillhandahåller pmxi_gallery_image-hooken, som aktiveras för varje uppladdad bild. Du fångar upp bilagans ID och sparar det i inläggets meta-fält i önskat format.
Tre testade varianter, välj för ditt tema eller galleriplugin.
Variant 1: array med bilagors ID:n. Passar de flesta teman som förväntar sig galleriet som en array av bilagors ID:n:
1 function my_gallery_ids($post_id, $att_id, $filepath, $is_keep_existing_images) 2 { 3 $key = '_my_gallery'; 4 $gallery = get_post_meta($post_id, $key, true); 5 6 if (empty($gallery)) { 7 $gallery = array(); 8 } 9 10 if (!in_array($att_id, $gallery)) { 11 $gallery[] = $att_id; 12 update_post_meta($post_id, $key, $gallery); 13 } 14 } 15 add_action('pmxi_gallery_image', 'my_gallery_ids', 10, 4);
Variant 2: array med webbadresser. Om temat behöver direkta länkar till bilder i full storlek:
1 function my_gallery_urls($post_id, $att_id, $filepath, $is_keep_existing_images) 2 { 3 $key = '_my_gallery'; 4 $size = 'full'; 5 $gallery = get_post_meta($post_id, $key, true); 6 7 if (empty($gallery)) { 8 $gallery = array(); 9 } 10 11 if (!isset($gallery[$att_id])) { 12 $src = wp_get_attachment_image_src($att_id, $size); 13 $gallery[$att_id] = $src[0]; 14 update_post_meta($post_id, $key, $gallery); 15 } 16 } 17 add_action('pmxi_gallery_image', 'my_gallery_urls', 10, 4);
Variant 3: sträng med avgränsare. Om meta-fältet lagrar ID:n separerade med kommatecken (format "23,25,31"):
1 function my_gallery_string($post_id, $att_id, $filepath, $is_keep_existing_images) 2 { 3 $key = '_my_gallery'; 4 $sep = ','; 5 $gallery = get_post_meta($post_id, $key, true); 6 7 if (is_string($gallery) || empty($gallery) || $gallery == false) { 8 $gallery = explode($sep, $gallery); 9 if (!in_array($att_id, $gallery)) { 10 if ($gallery[0] == '') unset($gallery[0]); 11 $gallery[] = $att_id; 12 update_post_meta($post_id, $key, implode($sep, $gallery)); 13 } 14 } 15 } 16 add_action('pmxi_gallery_image', 'my_gallery_string', 10, 4);
Koden infogas i temats functions.php. När importen är klar kan hooken tas bort, meta-fältet är redan ifyllt. Fördelen med denna metod: galleriet är klart direkt efter import, utan extra genomgångar.
Vad du gör med redan importerade inlägg
Om inlägg redan är uppladdade och bilder hänger i innehållet som vanliga <img>-taggar, behöver du en annan approach. Gå igenom alla inlägg och ersätt taggarna med gallery shortcode.
Funktionen nedan samlar in alla bilagors ID:n för ett inlägg och ersätter <img> i innehållet med [gallery ids="..."]:
1 function replace_post_images_with_gallery($post_id) 2 { 3 $post = get_post($post_id); 4 if (!$post) return; 5 6 $attachments = get_attached_media('image', $post_id); 7 8 if (empty($attachments)) return; 9 10 $ids = array(); 11 foreach ($attachments as $att) { 12 $ids[] = $att->ID; 13 } 14 15 $gallery_shortcode = '[gallery ids="' . implode(',', $ids) . '"]'; 16 $content = preg_replace('/<img[^>]+>/i', '', $post->post_content); 17 $content = $gallery_shortcode . "\n\n" . $content; 18 19 wp_update_post(array( 20 'ID' => $post_id, 21 'post_content' => $content, 22 )); 23 }
Kör sedan en massuppdatering:
- I adminpanelen, gå till listan över alla inlägg.
- I skärmalternativ, ställ in antalet objekt till 50 (optimalt så att servern inte kraschar).
- Markera alla inlägg, välj "Uppdatera" i massåtgärder och verkställ.
WordPress kommer att gå igenom varje inlägg, anropa save_post och relaterade hookar. Om funktionen i functions.php är kopplad till save_post, kommer den att köras. Efter slutförandet, **ta bort koden från **functions.php, annars kommer innehållet att byggas om igen vid varje inläggssparande.
⁉️🤔 Vanliga frågor
WP All Import** laddar inte ner bilder under import, vad är fel?**
Länkar i importfilen måste vara fullständiga webbadresser (med
http://ellerhttps://) och leda direkt till en bildfil, inte till en HTML-sida. Kontrollera skrivrättigheter förwp-content/uploads: om servern inte kan spara filen hoppas bildimporten över tyst. Den vanligaste orsaken är en mismatch mellan länkar i innehållets brödtext och i mallens Bilder-fält. Om innehållet harhttp://oldsite.com/img.jpg, och Bilder matas medhttp://newsite.com/files/img.jpg, kommer pluginet inte att länka dem och bilden förblir trasig. Webbadresserna måste matcha en-till-en.
Varför är pmxi_gallery_image bättre än efterimport?
Hooken aktiveras för varje bild vid uppladdningstillfället, galleriet är klart direkt efter import, utan en andra genomgång. Efterimport via
wp_update_postbelastar servern: tusen inlägg ger tusensave_post-anrop. För volymer upp till 100 inlägg är skillnaden försumbar, men för stora migreringar sparar hooken timmar. Dessutom gerpmxi_gallery_imagetillgång till sökvägen för den uppladdade filen och bilagans ID, du kan omedelbart föreskriva vilken logik som helst: fördela i mappar, lägg till i slider, synka med CDN. Efterimport ger inte sådan flexibilitet.
Är det nödvändigt att ta bort koden från functions.php efter import?
Ja. Om funktionen hänger på
pmxi_gallery_image, aktiveras den vid VARJE bilagetillägg, resultatet: dubbletter i galleriets meta-fält vid manuell bilduppladdning. Hooken körs en gång, efter att importen är klar kan den säkert tas bort. Om funktionen är kopplad tillsave_posteller används i massuppdatering, ta bort den desto mer. Annars kommer varje inläggsredigering att bygga om innehållet, ta bort<img>-taggar och skriva om galleriet.
Hur lämnar man enskilda bilder utanför galleriet?
Exkludera dem från ersättning. I varianten med
pmxi_gallery_image, lägg till ett villkor efter storlek eller alt-text. I varianten med efterimport, istället förpreg_replaceför alla<img>, använd selektiv ersättning: lämna bilder med en specifik CSS-klass eller attribut, ta bort resten och ersätt med galleri. Till exempel,<img class="keep">finns kvar i innehållet, alla andra<img>ersätts med[gallery]. Löses genom att förfina regexet i ersättningsfunktionen.
Behövs WP All Import Pro eller räcker gratisversionen?
Gratisversionen kan importera bilder till mediebiblioteket och bifoga dem till ett inlägg.
pmxi_gallery_image-hooken är tillgänglig i den också. Pro-versionen lägger till: laddning av bilder från externa webbadresser, Cron-importer enligt schema, körning av PHP-funktioner direkt i importmallen och stöd för anpassade fält. För en engångsimport med lokala filer är gratisversionen mer än tillräcklig. Pro behövs när bilder finns på en tredjepartsserver och du inte vill ladda ner dem manuellt, samt för ACF-fält, WooCommerce-import och arbete med anpassade inläggstyper.
Vilken metod du ska välja för din uppgift
Om du just planerar en import, sätt ihop galleriet i farten via pmxi_gallery_image. Snabbare, renare och utan dubbel belastning på servern. Vilken som helst av de tre varianterna ovan fungerar: valet beror på vilket format ditt tema eller plugin förväntar sig galleriet i.
Om inlägg redan är uppladdade och bilder är utspridda över innehållet, ta funktionen för att ersätta <img> med [gallery] och kör en massuppdatering. För små volymer (upp till 200 inlägg) tar detta ett par minuter. För tusentals inlägg är det klokare att dela upp i batcher om 50.
WP All Import i sig är en av de mest flexibla importörerna för WordPress. 200 000+ aktiva installationer, gratisversionen på WordPress.org täcker de flesta migreringsuppgifter. Och Pro-versionen tar bort de sista begränsningarna för externa webbadresser och Cron-importer. Testa den.



