WordPress XML İçe Aktarma Sırasında Resimler Gelmiyorsa Ne Yapılır?

Wordpress Hata Çözümü

WordPress taşıma işlemlerinde en sık yaşanan sorunlardan biri, XML dosyası içe aktarılırken yazıların gelmesi fakat resimlerin eksik kalmasıdır. Özellikle büyük sitelerde, medya dosyalarının uzaktan çekilmesi sırasında zaman aşımı, geçici dizin doluluğu veya bağlantı sorunları ortaya çıkabilir. Bu tür durumlarda işlemi panel üzerinden zorlamak yerine SSH, tmux ve WP-CLI ile ilerlemek daha sağlam bir yöntemdir.

Bu örnekte kaynak ve hedef yapı için datweb.com.tr alan adı kullanılacaktır. Mantık değişmez. Sadece kullanıcı adı, dosya adı ve alan adı sizin sunucunuza göre değiştirilir.

XML içe aktarma mantığı nasıl çalışır?

WordPress XML dosyası yazıları, kategorileri, etiketleri, yorumları ve medya bağlantılarını taşır. Ancak resim dosyalarının kendisini dosyanın içine gömmez. Yani import sırasında hedef site, eski sitedeki görselleri bağlantı üzerinden yeniden indirmeye çalışır. Sorun da tam burada çıkar. Eski siteden resim çekme aşaması başarısız olursa yazılar gelir ama görseller eksik kalır.

İşe başlamadan önce geçici dosyaları temizlemek

Bazı sunucularda /tmp dizini doluysa import işlemi sırasında geçici dosyalar oluşturulamaz ve medya çekimi aksar. Sunucuda kritik başka işlem yoksa eski geçici dosyaları temizlemek faydalı olabilir.

find /tmp -xdev -type f -name "*.tmp" -mmin +30 -delete

Bu komut, /tmp altında otuz dakikadan eski .tmp dosyalarını temizler.

WordPress kullanıcısına geçiş yapmak

İşlemi root ile değil, ilgili hosting kullanıcısıyla yapmak daha düzgündür. Bu örnekte kullanıcı adı datwebcomtr olarak düşünülmüştür.

su - datwebcomtr

Ardından WordPress kurulum dizinine geçilir.

cd ~/public_html

Doğru dizinde olduğunuzu kontrol etmek için şu komut da kullanılabilir:

pwd

Uzun sürecek işlemler için tmux kullanmak

XML içe aktarma bazen uzun sürer. SSH bağlantısı kopsa bile işlemin devam etmesi için tmux kullanmak gerekir. Önce mevcut oturumlara bakılır.

tmux ls

Eğer daha önce açılmış bir oturum varsa ona bağlanabilirsiniz.

tmux attach -t wpimport

Yeni bir oturum oluşturmak isterseniz aşağıdaki komut yeterlidir.

tmux new -s wpimport

Bu komutla wpimport adlı yeni bir tmux oturumu açılır. Bundan sonra işlemleri bu ekran içinde çalıştırmanız daha güvenlidir.

XML dosyasının doğru yerde olduğunu kontrol etmek

İçe aktarılacak XML dosyası public_html içine yüklenmiş olmalıdır. Örnek dosya adı datweb.xml olarak düşünelim. Kontrol için şu komut kullanılır:

ls -lh datweb.xml

Eğer dosya görünüyorsa import aşamasına geçilebilir.

WP-CLI ile XML içe aktarma

Temel import komutu aşağıdaki gibidir:

wp import datweb.xml --authors=create

Bu komut, XML dosyasındaki yazıları, içerikleri ve yazar bilgilerini içe aktarmaya çalışır. Eğer XML içindeki yazarlar hedef sitede yoksa sistem onları oluşturmaya dener.

Bazen bazı sunucularda import komutu yüklü olmayabilir. Böyle bir durumda önce import paketi kurulmalıdır.

wp package install wp-cli/import-command

Kurulum tamamlandıktan sonra import komutu yeniden çalıştırılır.

wp import datweb.xml --authors=create

Bellek sınırı nedeniyle hata alınırsa

XML büyükse veya sunucu PHP bellek sınırı düşükse komut başarısız olabilir. Böyle bir durumda komutu daha yüksek bellek limitiyle çalıştırmak mümkündür.

php -d memory_limit=512M $(which wp) import datweb.xml --authors=create

Resimler neden gelmeyebilir?

Resimlerin gelmemesinin temel sebebi, hedef sitenin kaynak sitedeki medya dosyalarına HTTP üzerinden erişip onları indirememesidir. Bunun nedeni zaman aşımı, güvenlik duvarı, mod_security, Cloudflare, SSL problemi veya kaynak sunucudaki erişim engeli olabilir. Önce doğrudan görsel bağlantısına erişim testi yapmak gerekir.

curl -I https://datweb.com.tr/wp-content/uploads/2026/03/ornek-resim.jpg

Bu komutta 200 OK yanıtı geliyorsa bağlantı tarafı büyük ölçüde çalışıyor demektir. 403, 406, 429 veya 503 gibi bir cevap dönüyorsa WordPress de aynı görseli çekmekte zorlanacaktır.

Disk ve geçici alan kontrolü

Import sırasında resimler yine gelmiyorsa sunucunun disk ve inode durumuna da bakılmalıdır.

df -h
df -i
du -sh /tmp

Disk doluysa veya inode sınırı aşılmışsa medya dosyaları indirilemez.

PHP modüllerini kontrol etmek

WordPress uzaktan dosya çekerken veya görsel işlerken curl, gd ya da imagick gibi bileşenlere ihtiyaç duyabilir. Sunucuda bunların durumunu görmek için şu komutlar kullanılabilir:

php -m | egrep 'curl|imagick|gd'
php -r 'echo "allow_url_fopen=".ini_get("allow_url_fopen").PHP_EOL;'
php -r 'echo "memory_limit=".ini_get("memory_limit").PHP_EOL;'

En sağlam yöntem: uploads klasörünü doğrudan taşımak

Açık konuşmak gerekirse büyük sitelerde WordPress’in resimleri XML üzerinden tek tek çekmesini beklemek çoğu zaman gereksiz risk oluşturur. En temiz yöntem, yazıları XML ile almak ve resimleri doğrudan wp-content/uploads klasöründen taşımaktır.

Eğer sadece belirli bir ayın içeriğini alıyorsanız, örneğin Ocak 2026 yazıları taşınıyorsa, kaynak siteden şu klasör alınır:

/wp-content/uploads/2026/01/

Ardından hedef sitede aynı klasöre çıkarılır:

/home/datwebcomtr/public_html/wp-content/uploads/2026/01/

Bu işlem cPanel üzerinden zip alıp aynı ay klasörüne çıkartılarak da yapılabilir. Buradaki önemli nokta klasör yapısının bozulmamasıdır. Dosyalar yanlışlıkla iç içe klasör oluşturursa yazılar resimleri bulamaz.

SSH erişimi varsa rsync ile taşıma

Kaynak sunucuya SSH erişiminiz varsa, uploads klasörünü doğrudan kopyalamak çok daha temiz olur.

cd ~/public_html
rsync -avz --progress KAYNAK_KULLANICI@KAYNAK_IP:/home/KAYNAK_KULLANICI/public_html/wp-content/uploads/ ./wp-content/uploads/

Taşıma tamamlandıktan sonra dosya izinleri düzenlenebilir.

find ~/public_html/wp-content/uploads -type d -exec chmod 755 {} \;
find ~/public_html/wp-content/uploads -type f -exec chmod 644 {} \;

SSH erişimi yoksa wget ile çekmek

Eğer kaynak sunucuya SSH yoksa ama medya dosyaları web üzerinden açıksa, uploads klasörünü wget ile almaya çalışabilirsiniz.

cd ~/public_html/wp-content/uploads
wget -r -np -nH --cut-dirs=2 -R "index.html*" https://datweb.com.tr/wp-content/uploads/

Bu yöntem büyük klasörlerde yavaş olabilir ama bazı durumlarda iş görür.

Alan adı değiştiyse URL düzeltmek

Site eski alan adından yeni alan adına taşındıysa içeriklerdeki görsel bağlantılarını da güncellemek gerekir. Örneğin datweb.com.tr adresinden yeni bir adrese geçildiyse aşağıdaki komut kullanılabilir:

wp search-replace 'https://datweb.com.tr' 'https://yenidatweb.com.tr' --skip-columns=guid

Eğer alan adı değişmediyse bu adıma gerek yoktur.

Medya boyutlarını yeniden üretmek

Uploads klasörünü doğru yere attıktan sonra küçük resim boyutlarını yeniden üretmek için aşağıdaki komut kullanılabilir:

wp media regenerate --yes

Bu komut hedef sitede, yani WordPress kurulumunun bulunduğu public_html dizininde çalıştırılmalıdır.

su - datwebcomtr
cd ~/public_html
wp media regenerate --yes

Burada önemli bir ayrıntı vardır. Bu komut dışarıdan resim indirmez. Sadece WordPress içinde mevcut medya kayıtları için küçük boyutlar üretir. Yani fiziksel dosyalar uploads içine atılmadan bu komuttan mucize beklemek doğru değildir.

tmux oturumundan çıkmadan işlemi arka plana almak

İçe aktarma veya regenerate işlemi uzun sürüyorsa tmux ekranını kapatmadan işlemi arka planda bırakabilirsiniz. Bunun için önce klavyeden Control ve b tuşlarına basılır, ardından d tuşuna basılır. Böylece oturum arka planda çalışmaya devam eder.

Daha sonra aynı oturuma geri dönmek için şu komut kullanılır:

tmux attach -t wpimport

Örnek tam işlem sırası

Aşağıda datweb.com.tr örneğine göre, temel akış tek parça halinde verilmiştir. Bu yapı özellikle ay ay XML import yapan sistemlerde oldukça kullanışlıdır.

find /tmp -xdev -type f -name "*.tmp" -mmin +30 -delete

su - datwebcomtr
cd ~/public_html

tmux ls
tmux new -s wpimport

ls -lh datweb.xml
wp import datweb.xml --authors=create

wp media regenerate --yes

Daha sağlıklı çalışma düzeni

En güvenli yöntem önce ilgili aya ait XML dosyasını içe aktarmak, ardından aynı aya ait uploads klasörünü hedef siteye koymak ve son olarak medya boyutlarını yeniden üretmektir. Eski yöntem budur ve büyük sitelerde hâlâ en sorunsuz yöntemlerden biridir. Panelden tek tıkla yapılmaya çalışılan taşımalar küçük sitelerde iş görür, fakat büyük arşivli yayın sitelerinde komut satırıyla kontrollü ilerlemek çok daha akıllıcadır.

Hızlı İletişim Formu

Sorun, teklif ya da net bir soru… kısa yazın, biz dönüş yapalım.