Wir haben sehr lange Ladezeiten beim Bearbeiten eines Posts oder einer Seite festgestellt. Bei Verwendung von Query Monitor haben wir festgestellt, dass diese WP-Kernabfrage bis zu 15-20 Sekunden dauert.
SELECT meta_key
FROM wp_postmeta
GROUP BY meta_key
HAVING meta_key NOT LIKE '\\_%'
ORDER BY meta_key
LIMIT 30
caller:
meta_form()
post_custom_meta_box()
do_meta_boxes()
Wir verwenden viel Postmeta, da einer unserer Post-Typen ungefähr 20 benutzerdefinierte Felder verwendet. Ich würde sagen, vielleicht verlassen wir uns zu sehr auf Postmeta, aber dies scheint eine sehr unzulängliche Abfrage zu sein, da nicht einmal die ID des Posts ausgewählt wird.
Ist das ein häufiges Problem? Gibt es eine Möglichkeit, diese Funktion über einen Filter zu deaktivieren? Vielen Dank für jede Eingabe.
meta_form()
Funktion ausgecheckt und dies ist in der Tat die generierte SQL-Abfrage von dieser Kernfunktion. Sie können versuchen, eine eigene benutzerdefinierte Metabox mit Änderungen am Code hinzuzufügenmeta_form()
und dort Ihre vorgeschlagene SQL-Abfrage zu verwenden. Ich habe dieses geschlossene Trac-Ticket Nr. 8561 gefunden . Sie könnten vielleicht ein anderes Ticket erstellen oder versuchen, dieses wieder zu öffnen? PS: Beachten Sie, dass die Auswahl der Metabox auf der übergeordneten Seite ebenfalls problematisch ist. Wenn Sie 1 Million Seiten haben, werden alle als ausgewählte Optionen angezeigt!meta_form()
Funktion ersetzen . Ich habe die Antwort aktualisiert - die SQL-Kernabfrage wurde in WP Version 4.3 angepasst. Sehen Sie bei dieser neuen SQL-Abfrage einen Leistungsgewinn im Vergleich zu unserer zusätzlichenpost_id
Einschränkung?Antworten:
Wenn Sie Ihr benutzerdefiniertes SQL testen möchten, um festzustellen, wie sich dies auf die Ladezeit auswirkt, können Sie diese Abfrage austauschen:
Hier benutzen wir den
add_meta_boxes_{$post_type}
Haken, wo$post_type = 'post'
.Hier tauschen wir die gesamte Abfrage aus, aber wir hätten sie auch anpassen können, um das dynamische Limit zu unterstützen.
Hoffentlich können Sie dies an Ihre Bedürfnisse anpassen.
Aktualisieren:
Diese möglicherweise langsame SQL-Kernabfrage wurde jetzt in WP Version 4.3 von angepasst
zu:
Schauen Sie sich den Kern Ticket # 24498 für weitere Informationen.
quelle
Wenn Sie den Quellcode der Funktion durchsuchen, finden Sie Folgendes:
Mit dem
postmeta_form_keys
Hook können Sie die Schlüssel manuell angeben, um zu vermeiden, dass diese ineffiziente Abfrage insgesamt aufgerufen wird:quelle
Kannst du das ausprobieren? Dies ist keine Lösung, sondern eine vorübergehende Problemumgehung.
quelle
Das Entfernen der Metaboxen verhindert auch die langsame Abfrage.
quelle