O R H A N K A R T O P U

Görünüm menüsünden Menüler ekranına girdiniz, sayfaları ve bağlantıları tek tek eklediniz, sıraladınız ve Menüyü Kaydet düğmesine bastınız. Ekran yenileniyor ama eklediğiniz öğelerin bir kısmı kaybolmuş. Ya da hiçbir değişiklik kaydedilmemiş, menü eski hâliyle duruyor. Büyük menülerde bu çok tipik bir sorundur ve çoğu kişi önce ‘ben mi yanlış yaptım’ diye düşünür. Oysa suç genelde sunucu ayarında.

Arka plandaki sebep

Bir menüyü kaydettiğinizde tarayıcı, her menü öğesi için sunucuya bir sürü veri gönderir. Her öğenin başlığı, bağlantısı, sırası, alt menü ilişkisi ayrı birer alan olarak iletilir. PHP’nin bu tek seferde kabul edebileceği alan sayısında bir sınır vardır ve bu sınıra max_input_vars denir. Menüdeki öğe sayısı arttıkça gönderilen alan sayısı bu sınırı aşabilir. Sınır aşıldığında PHP fazlalığı sessizce atar, yani hata bile vermez, sadece bazı öğeler kaydedilmemiş olur.

Varsayılan değer genelde 1000’dir. Kulağa çok gelebilir ama her menü öğesi birden fazla alan ürettiği için 60-70 öğeli bir menü bile bu sınıra dayanabilir. Bu yüzden büyük menülerde kayıp yaşanır.

Çözüm adımları

  1. Önce sorunun gerçekten max_input_vars olduğunu doğrulayın. Araçlar menüsündeki Site Sağlığı sayfasında, Bilgi sekmesi altında sunucunun max_input_vars değerini görebilirsiniz. Değer düşükse ve menünüz büyükse teşhis büyük olasılıkla doğrudur.
  2. Bu değeri artırın. En doğru yer php.ini dosyasıdır. Şu satırı ekleyin ya da varsa değerini yükseltin:
    • max_input_vars = 3000

    Değişiklikten sonra PHP’nin yeniden başlatılması ya da barındırma panelinden ayarın uygulanması gerekir.

  3. php.ini’ye erişiminiz yoksa barındırma firmanıza bu değeri artırmasını rica edin. Çoğu firma panelinden PHP ayarlarını değiştirmenize izin verir, oradan da yapabilirsiniz.
  4. Bazı sunucularda .htaccess ya da .user.ini dosyası üzerinden de bu ayar değiştirilebilir, ama bu sunucu yapılandırmasına bağlıdır ve her yerde çalışmaz. php.ini yine de en güvenilir yoldur.

Değeri artıramıyorsanız

Barındırma firması sınırı yükseltmiyorsa menüyü küçük parçalara bölmek pratik bir çözüm olur. Tek bir dev menü yerine mantıklı gruplara ayrılmış birkaç menü oluşturabilirsiniz. Örneğin üst menü, yan menü ve alt menü gibi. Her biri daha az öğe içerdiği için kaydetme sırasında sınırı aşmazsınız. Bu aynı zamanda ziyaretçi için de daha düzenli bir gezinme sunar.

Bir de şu var: menüyü kaydederken hepsini aynı anda eklemek yerine birkaç öğe ekleyip kaydetmek, sonra devam etmek sınırı zorlamadan ilerlemenizi sağlar. Zahmetli ama büyük menülerde işe yarar.

Bu sorunun en sinsi yanı sessiz olmasıdır. PHP sınırı aştığınızda size bir uyarı göstermez, sadece fazla gelen alanları atar ve kalanı kaydeder. Bu yüzden menü kısmen kaydedilir ve siz hangi öğelerin kaybolduğunu ekranı tek tek inceleyene kadar fark etmezsiniz. Özellikle alt menüleri olan derin yapılarda en alttaki öğeler ilk kaybolanlardır. Kaydettikten sonra menünüzü baştan sona gözden geçirip eksik var mı diye bakmak, sorunu erken yakalamanın tek yoludur.

Eklenti ihtimalini de atlamayın

Nadir de olsa bazı eklentiler menü kaydetme sürecine müdahale eder ve sorun çıkarır. max_input_vars değeri yeterliyken menü hâlâ kaydedilmiyorsa eklentileri geçici olarak kapatıp tekrar deneyin. Menü bir eklentiyi kapatınca kaydediliyorsa o eklenti sebeptir.

Tekrar yaşamamak için

Siteniz büyümeye devam edecekse max_input_vars değerini baştan 3000 gibi rahat bir seviyeye çekmek ileride bu sorunu hiç yaşamamanızı sağlar. Menülerinizi gereksiz yere şişirmemek, yani her sayfayı tek menüye tıkıştırmamak da hem teknik hem de kullanılabilirlik açısından iyidir. Barındırma firmanızın PHP ayarlarına ne kadar müdahale izni verdiğini bilmek, böyle anlarda vakit kazandırır. Bu küçük hazırlıkla menüleriniz eksiksiz kaydedilir.

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

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

WhatsApp