İçindekiler
Sorunun Tanımı
![- Denizli Seo Uzmanı sprintf() Too Few Arguments hatası](https://yunuskaratas.com.tr/wp-content/uploads/2024/12/image-2-1024x471.png)
WordPress’te class-bulk-upgrader-skin.php dosyasının belirli bir satırında aşağıdaki hata ile karşılaşabilirsiniz:
Warning: sprintf() Too few arguments
Bu hata, WordPress’in toplu yükseltme işlemleri sırasında oluşur. sprintf() fonksiyonu, belirtilen dizgedeki yer tutucuları (%s, %d vb.) eksik ya da hatalı argümanlarla doldurduğu için hata verir.
Önemli!
- Eğer WordPress çekirdek dosyalarında düzenleme yapıyorsanız, yedeğinizi mutlaka alın.
- WordPress güncellemeleri sonrasında dosyanızın üzerine yazılabileceğini unutmayın. Uzun vadeli çözüm için bir child theme kullanarak gerekli düzenlemeleri buradan yapabilirsiniz.
Hata Veren Kod Parçacığı
Dosya yolu: wp-admin/includes/class-bulk-upgrader-skin.php
Aşağıdaki kod hatalı bir yapı içermektedir:
if ( $this->result && ! is_wp_error( $this->result ) ) {
if ( ! $this->error ) {
echo '<div class="updated js-update-details" data-update-details="progress-' . esc_attr( $this->upgrader->update_current ) . '">' .
'<p>' . sprintf( $this->upgrader->strings['skin_update_successful'], $title ) .
' <button type="button" class="hide-if-no-js button-link js-update-details-toggle" aria-expanded="false">' . __( 'Show details.' ) . '</button>' .
'</p></div>';
}
echo '<script type="text/javascript">jQuery(\'.waiting-' . esc_js($this->upgrader->update_current) . '\').hide();</script>';
}
Hata Nedeni
sprintf()
fonksiyonu, skin_update_successful
dil dizgesinde belirttiğiniz yer tutuculara uygun sayıda argüman almalıdır. Eğer beklenen birden fazla parametre varsa ama sadece bir tane verilmişse, bu hata ortaya çıkar.
Çözüm Yolu
Hatanın çözümü için, sprintf()
çağrısında gerekli parametreleri eksiksiz ve doğru şekilde eklememiz gerekiyor. Düzgün çalışan alternatif kod aşağıdaki gibidir:
if ( $this->result && ! is_wp_error( $this->result ) ) {
if ( ! $this->error ) {
echo '<div class="updated"><p>' .
sprintf(
$this->upgrader->strings['skin_update_successful'],
$title,
'jQuery(\'#progress-' . esc_js($this->upgrader->update_current) . '\').toggle();jQuery(\'span\', this).toggle(); return false;'
) .
'</p></div>';
}
echo '<script type="text/javascript">jQuery(\'.waiting-' . esc_js($this->upgrader->update_current) . '\').hide();</script>';
}
Yapılan Değişiklikler
sprintf()
fonksiyonunda ikinci bir parametre eklendi:jQuery
kodu eklendi:jQuery(\'#progress-' . esc_js($this->upgrader->update_current) . '\')...
- Hatalı olan
data-update-details
kullanımı kaldırıldı. - Kod daha temiz ve anlaşılır hale getirildi.
Dosyayı Güncelleme Adımları
- Dosya Konumu:
wp-admin/includes/class-bulk-upgrader-skin.php
- Hatalı kodu yukarıda verdiğimiz doğru kodla değiştirin.
- Değişikliklerin etkili olması için WordPress önbelleğini temizleyin ve test edin.
Bu düzenleme ile “sprintf() Too few arguments” hatasını çözüme kavuşturmuş olacaksınız. Toplu güncelleme işlemleri sırasında WordPress artık düzgün bir şekilde hata vermeden çalışacaktır.