2016-03-30 16 views
2

Yavaş bir wordpress sitesini optimize etmeye çalışıyorum. Anormal bir şey bulmak için Query Monitor adlı bir eklenti kullanıyorum.WordPress rewrite_rules seçeneği bir kereden fazla ekleme

Rewrite_rules seçeneğinin her sayfada (50000'den fazla karakter) yeniden yerleştirildiğini görebiliyorum.

add_option() 

- 
update_option() 
wp-includes/option.php:301 
WP_Rewrite->wp_rewrite_rules() 
wp-includes/class-wp-rewrite.php:1452 
WP_Rewrite->flush_rules() 
wp-includes/class-wp-rewrite.php:1774 
do_action('wp_loaded') 
wp-includes/plugin.php:525 

Bu dosyalar çekirdek wordpress dosyaları gibi görünüyor: Burada

StackTrace olduğunu.

Bu normal davranış olup olmadığından emin değilim? Sanırım iyi bir sebep göremiyorum.

Bunu daha önce gördünüz mü?

+0

Ben paylaştığınız çıktı kereden fazla takılı bir şey görmüyorum ... – rnevius

+0

Hayır, opsiyon (floş) önce silinir, bu yüzden her zaman bir satır olacak. Her sayfada neden uzun bir sorgu yürütdüğünü merak ediyorum. Permalinklerim her dakika değişecek gibi değil. – FLX

cevap

1

WordPress, tüm özel yeniden yazma kurallarının önbelleğini tutar. Bazen eklentiler veya temalar bu kurallarda değişiklik yapar, ancak WordPress, önbellek yenilenene kadar değişiklikleri gerçekten fark etmez.

Bu işlemsel bir işlev değil, WP_Rewrite sınıfının statik olmayan bir yöntemidir. Flush_rules() öğesini çağırmak için, önce WordPress '$ wp_rewrite global kullandığınızdan emin olmalısınız ve bunu bir yöntem olarak adlandırmalısınız (örnek için yukarıdaki "Kullanım" bölümüne bakın). Not: Bu aynı yöntem, permalink ayarları WordPress yöneticisinde değiştirildiğinde veya kaydedildiğinde çağrılır. Bu nedenle, WordPress'in yöneticisinde Ayarlar> Permalinks ekranı ziyaret edilerek kuralların yeniden düzenlenmesi manuel olarak yenilenebilir. Üste |

UYARI: Bu işlev parametre olmadan veya doğru parametresiyle çağrılırsa, .htaccess'inizin üzerine yazılır ve özel kurallar kaybolur!

//Ensure the $wp_rewrite global is loaded 
global $wp_rewrite; 
//Call flush_rules() as a method of the $wp_rewrite object 
$wp_rewrite->flush_rules(false); 
+0

Neden htaccess içinde olmayacak önbellek kuralları? Ve neden her sayfada yüklenir? – FLX

İlgili konular