WordPress sürümünüzü güncelledikten sonra kullanıcı yetkilerinde bazı problemler ile karşılaşabilirsiniz. Güncellemeden önceki sürümde tam yetkiye sahip yönetici, yeni sürüm üzerinde yetkilerin bazılarını kaybedebilir örneğin. İşte bu tarz bir probleminiz varsa, yamamız hazır 🙂
capabilities.php on line 31 hatası ile ilişkisi
Emin değilim ancak alttaki hatanın da çözüm yolu sanırım hazırladığım yama.
Warning: Invalid argument supplied for foreach() in /home/nnn/public_html/wp-includes/capabilities.php on line 31
Çünkü adı geçen dosyanın o satırında kullanıcı yetkileri derleniyor. Ve seçeneklerde tanımlanmayan bir yönetici yetkisi istendiğinde, ilgili yetki olmadığı için döngü hata veriyor.
Benzer hatalar tamamen wordpress sürümlerini güncelledikten sonra çıkıyor. Tabi bu güncelleme, aralarda epey sürüm farkı olduğunda ortaya çıkıyor. Yani 2.0.x ‘den 2.3.x ‘e gibi. Arada onlarca WordPress sürümü var.
Bu gibi bir olayı (hata kodu olmaksızın) arkadaşımın sitesinde yaşadık. Hatırladığım kadarıyla eski bir sürümden direkt WP 2.3.x ‘e güncelleme yapmıştık. WordPress tüm güncellemeleri halletti sandım fakat gördüm ki halletmemiş 😀 Neyse yazmış olduğum alttaki yama ile halletmiş olduk 😉
Neden kaynaklanıyor?
WordPress sürümlerinde kullanıcı yetkileri değişiklik gösterebiliyor. Yeni bir sürüm çıktığında yeni kullanıcı yetkileri de çıkabiliyor. Eğer yeni sürüme güncelleme esnasında, bu yeni eklenen yetkiler de sisteme tanımlanmazsa, benzer hataları yaşayabiliyoruz.
Bahsettiğim bu yetkiler dosya içerisinde satır olarak geçmiyor. Aksine veritabanında wp_options tablosunda wp_user_roles adı altında geçiyor. Hazırlamış olduğum yama ile bu yetkileri wordpress 2.3.1 ile gelen yetkiler ile güncelliyoruz. Daha doğrusu eksik olanları da tanımlıyoruz.
Yamanın uygulanması
Yamayı buradan indirmeli ve wordpress dizinine atıp URL adresinden çağırmak koşulu ile çalıştırmalısınız. Yetkiler güncellenecek ve son halini çıktı verecektir. Eğer çıktı vermesine karşın yine satır numarası hatası görüntüleniyorsa, dosyayı tekrar çalıştırın (başından beri “capabilities.php on line 31” hatası alanlardansanız). İkinci çalıştırmada hata gidecektir. İşlem bu kadar 🙂
Sadece benzer problem yaşıyorsanız yamayı uygulayınız. Uygulamadan önce “wp_options” tablosunun yedeğini alınız. Yamayı uygulamak sizin sorumluluğunuzdadır.