Bir eğitim videosunda gördüğünüz kod parçasını temanızın functions.php dosyasına yapıştırdınız, kaydettiniz ve site anında çöktü. Ekranda şuna benzer bir satır var: ‘Parse error: syntax error, unexpected … in /wp-content/themes/…/functions.php on line 142’. Hem site hem yönetim paneli gitti. İyi haber şu: WordPress size tam olarak hangi dosyada ve hangi satırda sorun olduğunu söylüyor.
Parse error, PHP’nin yazdığınız kodu okuyamadığı anlamına gelir. Bir yerde söz dizimi kuralı ihlal edilmiştir. Çoğu zaman eksik bir noktalı virgül, kapatılmamış bir parantez, fazladan bir karakter ya da yanlış yere konmuş bir süslü parantezdir. PHP, bu hatayı görünce kodu çalıştırmayı bırakır ve hata mesajını ekrana basar.
Belirti nasıl görünür
Değişikliği kaydettiğiniz anda site beyaz bir hata metniyle kilitlenir. Mesaj genelde İngilizcedir ve içinde ‘syntax error’ ifadesiyle birlikte dosya yolu ve satır numarası geçer. Panele girmeye çalıştığınızda da aynı metni görürsünüz, çünkü functions.php sitenin her sayfasında çalışır.
Neden oluyor
- Eklenen kodda noktalı virgül, parantez ya da tırnak eksik veya fazla.
- Kod kopyalanırken başına ya da sonuna bozuk karakter karışmış.
- İki ayrı kod parçası üst üste yapıştırılıp PHP açma/kapama etiketleri karışmış.
- Dosyanın en başındaki ya da sonundaki boşluklar bozulmuş.
Adım adım çözüm
Panele giremediğiniz için bu işi FTP ile yapacaksınız. Bir FTP istemcisiyle sunucuya bağlanın ve hatanın gösterdiği dosyaya gidin, örneğin wp-content/themes/temaniz/functions.php. Dosyayı bilgisayarınıza indirin ve bir metin düzenleyiciyle açın. Not defteri yerine satır numaralarını gösteren bir editör (VS Code, Notepad++ gibi) kullanın, çünkü hata mesajındaki satıra doğrudan gitmeniz gerekiyor.
Mesajdaki satır numarasına gidin. Oradaki ve bir önceki satırı dikkatle inceleyin. PHP çoğu zaman hatayı gerçek yerin bir satır sonrasında gösterir, çünkü eksik karakteri ancak bir sonraki satırda fark eder. Tipik suçlular: satır sonunda olması gereken noktalı virgülün olmaması, açılıp kapatılmayan parantez, ya da bir fonksiyonun süslü parantezinin kapatılmaması.
En güvenli yol, soruna yol açan kodu tamamen geri almaktır. Eğer bu hata siz bir kod eklediğiniz için çıktıysa, eklediğiniz satırları silin ve dosyayı eklemeden önceki haline getirin. Dosyayı kaydedip FTP ile sunucuya geri yükleyin. Site büyük olasılıkla hemen geri gelir.
Dosyanın eski halini bilmiyorsanız ve yedeğiniz varsa, yedekten functions.php dosyasını geri yükleyin. Tam site yedeği aldığınız bir sistem varsa oradan ilgili dosyayı çıkarabilirsiniz. Hiç yedeğiniz yoksa ve hatayı bulamıyorsanız, eklediğiniz kodu satır satır silerek hangi satırın soruna yol açtığını daraltabilirsiniz.
Kodu düzeltmek yerine doğru yere koymak
Asıl mesele şu: functions.php’ye doğrudan kod eklemek riskli bir alışkanlık. Tek bir karakter hatası tüm siteyi devre dışı bırakabiliyor. Bunun yerine iki daha güvenli yol var. Birincisi çocuk tema kullanmak. Çocuk temada functions.php bozulsa bile ana tema bozulmadan kalır ve geri dönmeniz kolaylaşır. İkincisi, kod parçalarını yönetmek için yapılmış bir eklenti kullanmak. Bu tür eklentiler eklediğiniz kodda hata olursa onu otomatik devre dışı bırakıp sitenin çökmesini engeller.
Tekrar yaşamamak için
Koda dokunmadan önce dosyanın bir kopyasını bilgisayarınıza indirin, böylece bir şey bozulursa saniyeler içinde geri yükleyebilirsiniz. Değişiklikleri önce bir test ortamında deneyin. İnternette bulduğunuz kodları yapıştırırken başına sonuna karışabilecek görünmez karakterlere dikkat edin, kodu önce düz bir metin editörüne yapıştırıp oradan almak bu riski azaltır. Bir kod snippet eklentisi kullanmak da functions.php’yi hiç ellemeden aynı işleri yapmanızı sağlar.
Bu hata ilk anda sitenizi kaybettiğinizi düşündürür ama aslında en kolay düzelen hatalardan biridir, çünkü WordPress size suçlu dosyayı ve satırı adres gibi verir. Eklediğiniz kodu geri aldığınızda site neredeyse her zaman anında geri gelir.
Bu işleri kendiniz yapmak yerine profesyonel destek isterseniz, WordPress bakım ve teknik destek hizmetime göz atabilirsiniz.
Bu konunun tüm rehberi: WordPress Hataları ve Çözümleri