
🔧 WP All Import: hvordan samle alle innleggsbilder i ett enkelt galleri
Importerte hundre innlegg via WP All Import, og bildene spredte seg tilfeldig utover innholdet: strukket til full bredde noen steder, presset mot tekst andre steder, og hengende som ødelagte lenker andre steder igjen. Å gå gjennom hvert innlegg manuelt er en bortkastet kveld.
Det finnes en måte å samle alt i ett enkelt galleri. Automatisk, uten manuell redigering av innhold. Metoden fungerer både for ferske importer og innlegg lastet opp for en måned siden. Nedenfor er to tilnærminger: den enkle (i farten, via pmxi_gallery_image-hooken) og i etterkant (med masseoppdatering). Begge testet på WP All Import 4.9+.
💡 Rask oversikt:
- Forbered CSV eller XML: bildelenker som fullstendige URL-er, én per linje
- I importmalen konfigurerer du Bilder-seksjonen og spesifiserer feltet med bilder
- Legg til
pmxi_gallery_image-hooken ifunctions.php, galleriet bygger seg selv under importen - For gamle innlegg: en funksjon for å erstatte
<img>med galleri-shortcode og masseoppdatering
Hvordan forberede bilder for import
Før du kjører importen, må bildelenkene være i riktig format. WP All Import laster ned bilder bare hvis URL-en er fullstendig, direkte og peker til en fil, ikke en HTML-side.
Anta at galleriet på den gamle siden ser slik ut:
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>
Etter parsing må lenkene i CSV-filen for import bli fullstendige URL-er, én per linje, uten HTML-omslag:
1 http://newsite.com/files/photo1.jpg 2 http://newsite.com/files/photo2.jpg
Der http://newsite.com er domenet til siden du importerer til. Kritisk: hvis lenkene er relative eller peker til det gamle domenet, vil ikke WP All Import plukke opp filene og vil ikke laste dem opp til mediebiblioteket.
Lenkene i innleggsteksten må samsvare én-til-én med dem du mater til plugin-en for opplasting. Ellers vil noen <img>-tagger forbli med gamle URL-er etter import og vil ikke bli inkludert i galleriet.
Konfigurere importmalen i WP All Import
I plugin-grensesnittet går du til importmalen. Hovedseksjonen her er Bilder. Den ser slik ut:

I Bilder-seksjonen spesifiserer du feltet som inneholder bildelenker. Vanligvis er dette en separat CSV-celle (for eksempel gallery_images), der lenker er listet med et skilletegn, som standard |:
1 http://newsite.com/files/photo1.jpg | http://newsite.com/files/photo2.jpg | http://newsite.com/files/photo3.jpg
WP All Import vil parse strengen, laste ned hvert bilde og legge det til i WordPress-mediebiblioteket. Men bildene er foreløpig bare festet til innlegget som vedlegg. Vi setter sammen galleriet separat.
Sørg for å sjekke hvordan plugin-en håndterer opplastingen. Klikk Forhåndsvis og test, deretter Kjør test. En grønn hake ved siden av antall bilder betyr at alt er riktig konfigurert. Et rødt kryss betyr at du må sjekke URL-ene: de må være fullstendige og direkte.
Før du starter importen, last opp bildefilene til files-mappen i nettstedets rot, hvis plugin-en henter bilder fra serveren og ikke fra eksterne URL-er.
Hvordan sette sammen galleriet i farten: pmxi_gallery_image-hook
Den reneste måten er å sette sammen galleriet direkte under importen. WP All Import tilbyr pmxi_gallery_image-hooken, som utløses for hvert opplastede bilde. Du fanger opp vedleggs-ID-en og lagrer den i postens meta-felt i ønsket format.
Tre testede varianter, velg for ditt tema eller galleri-plugin.
Variant 1: array med vedleggs-ID-er. Passer for de fleste temaer som forventer galleriet som en array med vedleggs-ID-er:
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 URL-er. Hvis temaet trenger direkte lenker til bilder i full størrelse:
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: streng med skilletegn. Hvis meta-feltet lagrer ID-er separert med komma (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 settes inn i temaets functions.php. Etter at importen er fullført, kan hooken fjernes, meta-feltet er allerede fylt. Fordel med denne metoden: galleriet er klart umiddelbart etter import, uten ekstra gjennomganger.
Hva du gjør med allerede importerte innlegg
Hvis innlegg allerede er lastet opp og bilder henger i innholdet som vanlige <img>-tagger, trenger du en annen tilnærming. Gå gjennom alle innlegg og erstatt taggene med galleri-shortcode.
Funksjonen nedenfor samler alle vedleggs-ID-er for et innlegg og erstatter <img> i innholdet 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 }
Kjør deretter en masseoppdatering:
- I admin-panelet går du til listen over alle innlegg.
- I skjerminnstillinger setter du antall elementer til 50 (optimalt så serveren ikke krasjer).
- Velg alle innlegg, velg «Oppdater» i massehandlinger og bruk.
WordPress vil gå gjennom hvert innlegg, kalle save_post og relaterte hooker. Hvis funksjonen i functions.php er knyttet til save_post, vil den kjøres. Etter fullføring, **fjern koden fra **functions.php, ellers vil innholdet bygges om på nytt ved hver lagring av innlegg.
⁉️🤔 Ofte stilte spørsmål
WP All Import** laster ikke ned bilder under import, hva er galt?**
Lenker i importfilen må være fullstendige URL-er (med
http://ellerhttps://) og lede direkte til en bildefil, ikke til en HTML-side. Sjekk skrivetillatelser forwp-content/uploads: hvis serveren ikke kan lagre filen, hoppes bildeimporten over uten varsel. Den vanligste årsaken er manglende samsvar mellom lenker i innholdsteksten og i Bilder-feltet i malen. Hvis innholdet harhttp://oldsite.com/img.jpg, og Bilder mates medhttp://newsite.com/files/img.jpg, vil plugin-en ikke koble dem og bildet forblir ødelagt. URL-er må samsvare én-til-én.
Hvorfor er pmxi_gallery_image bedre enn etterimport?
Hooken utløses for hvert bilde i opplastingsøyeblikket, galleriet er klart rett etter import, uten en ny gjennomgang. Etterimport via
wp_update_postbelaster serveren: tusen innlegg gir tusensave_post-kall. For volumer opp til 100 innlegg er forskjellen ubetydelig, men for store migreringer sparer hooken timer. I tillegg girpmxi_gallery_imagetilgang til banen til den opplastede filen og vedleggs-ID, du kan umiddelbart foreskrive enhver logikk: fordele i mapper, legge til i slider, synkronisere med CDN. Etterimport gir ikke slik fleksibilitet.
Er det nødvendig å fjerne koden fra functions.php etter import?
Ja. Hvis funksjonen henger på
pmxi_gallery_image, utløses den ved ALLE vedleggstillegg, resultatet: duplikater i galleriets meta-felt ved manuell opplasting av bilder. Hooken kjøres én gang, etter at importen er fullført kan den trygt fjernes. Hvis funksjonen er knyttet tilsave_posteller brukes i masseoppdatering, fjern den så absolutt. Ellers vil hver redigering av innlegg bygge om innholdet, fjerne<img>-tagger og skrive om galleriet.
Hvordan la enkeltbilder være utenfor galleriet?
Ekskluder dem fra erstatning. I varianten med
pmxi_gallery_image, legg til en betingelse etter størrelse eller alt-tekst. I varianten med etterimport, i stedet forpreg_replacefor alle<img>, bruk selektiv erstatning: la bilder med en spesifikk CSS-klasse eller attributt være, fjern resten og erstatt med galleri. For eksempel,<img class="keep">forblir i innholdet, alle andre<img>erstattes med[gallery]. Løses ved å raffinere regex i erstatningsfunksjonen.
Er WP All Import Pro nødvendig eller holder gratisversjonen?
Gratisversjonen kan importere bilder til mediebiblioteket og feste dem til et innlegg.
pmxi_gallery_image-hooken er tilgjengelig i den også. Pro-versjonen legger til: lasting av bilder fra eksterne URL-er, Cron-import på tidsplan, kjøring av PHP-funksjoner direkte i importmalen og støtte for egendefinerte felt. For en engangsimport med lokale filer er gratisversjonen mer enn nok. Pro trengs når bilder ligger på en tredjepartsserver og du ikke vil laste dem ned manuelt, samt for ACF-felt, WooCommerce-import og arbeid med egendefinerte innleggstyper.
Hvilken metode du bør velge for din oppgave
Hvis du bare planlegger en import, sett sammen galleriet i farten via pmxi_gallery_image. Raskere, renere og uten dobbel belastning på serveren. Enhver av de tre variantene ovenfor fungerer: valget avhenger av hvilket format temaet eller plugin-en din forventer galleriet i.
Hvis innlegg allerede er lastet opp og bilder er spredt utover innholdet, ta funksjonen for å erstatte <img> med [gallery] og kjør en masseoppdatering. For små volumer (opptil 200 innlegg) vil dette ta et par minutter. For tusenvis av innlegg er det lurere å dele opp i batcher på 50.
WP All Import selv er en av de mest fleksible importørene for WordPress. 200 000+ aktive installasjoner, gratisversjonen på WordPress.org dekker de fleste migreringsoppgaver. Og Pro-versjonen fjerner de siste begrensningene på eksterne URL-er og Cron-import. Prøv den.



