2016-03-30 19 views
2

Ich versuche, eine langsame Wordpress-Website zu optimieren. Ich benutze ein Plugin namens Query Monitor, um etwas abnormales zu finden.Wordpress Einfügen rewrite_rules Option mehr als einmal

Ich kann sehen, dass die Option rewrite_rules jede Seite neu eingefügt wird (mehr als 50000 Zeichen). Hier

ist die Stacktrace:

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 

Diese Dateien scheint, wie Kern Wordpress-Dateien.

Ich bin mir nicht sicher, ob dies das normale Verhalten ist? Ich denke nicht, weil ich keinen guten Grund sehe.

Haben Sie das schon einmal gesehen?

+0

Ich sehe nichts mehr eingesetzt als einmal in der Ausgabe, die Sie geteilt haben ... – rnevius

+0

Nein, ist die Option vor (Flush) gelöscht, so dass ich immer eine Zeile haben. Ich frage mich nur, warum sie eine lange Abfrage auf jeder Seite ausführen. Es ist nicht so, als würden sich meine Permalinks alle paar Minuten ändern. – FLX

Antwort

1

WordPress behält einen Cache aller benutzerdefinierten Rewrite-Regeln. Manchmal machen Plugins oder Themes Änderungen an diesen Regeln, WordPress erkennt die Änderungen jedoch erst, wenn der Cache neu generiert wurde.

Dies ist keine prozedurale Funktion, sondern eine nicht statische Methode der WP_Rewrite-Klasse. Um flush_rules() aufzurufen, müssen Sie zuerst sicherstellen, dass Sie WordPress '$ wp_rewrite global verwenden, und es als eine Methode aufrufen (siehe "Verwendung" oben für ein Beispiel).

Hinweis: Dieselbe Methode wird immer dann aufgerufen, wenn die Permalink-Einstellungen im WordPress-Admin geändert oder gespeichert werden. Überschreibregeln können manuell aktualisiert werden, indem Sie in WordPress den Bildschirm Einstellungen> Permalinks aufrufen.

ACHTUNG: Wird diese Funktion ohne einen Parameter oder mit einem Parameter von true aufgerufen, wird Ihr .htaccess überschrieben und alle benutzerdefinierten Regeln gehen verloren!

//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

Warum Cache-Regeln, die nicht in Htaccess sein werden? Und warum bei jeder Seitenladung? – FLX

Verwandte Themen