web-dev-qa-db-de.com

Das WordPress-Dashboard zeigt die CPT-Ergebnisse in 504 an

Ich habe einen benutzerdefinierten Beitragstyp mit einer benutzerdefinierten Taxonomie erstellt. Ich habe ungefähr 1500 Posts, die alle einem Taxonomiebegriff zugeordnet sind. Einige sind mehr als 200 Begriffen zugeordnet.

Mir ist aufgefallen, dass das Anzeigen der benutzerdefinierten Beitragstypen im Dashboard sehr viel Zeit in Anspruch nimmt. Meistens führt dies zu einem 504 Gateway Timeout.

Das Abfragen dieser Posts vom Front-End ist in Ordnung, und damit habe ich keine Probleme.

Wenn das Dashboard versucht, diese benutzerdefinierten Beitragstypen anzuzeigen, werden nach meinem Verständnis alle Informationen abgerufen, die jedem Beitrag zugewiesen sind, bevor alles angezeigt wird.

Ich habe dieses WP Installationsset, um in der Lage zu sein, so viel Speicher wie nötig zu verwenden (memory_limit = -1), wie ich recherchierte, einige sagten, es könnte speicherbezogen sein.

Gibt es etwas, das ich tun kann, um die Leistung dieser Abfrage zu verbessern? Laden Sie möglicherweise nicht alle Taxonomiebegriffs-Beziehungen eines Beitrags, bis Sie den Beitrag bearbeiten?

Fehler nach dem Erhöhen von WP_MEMORY_LIMIT von 1 GB auf 2 GB:

WordPress database error: [MySQL client ran out of memory]
SELECT t.*, tt.*, tr.object_id FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('locations') AND tr.object_id IN

WordPress database error: [Lost connection to MySQL server during query]
SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN

WordPress database error: [MySQL server has gone away]
SELECT DISTINCT YEAR( post_date ) AS year, MONTH( post_date ) AS month FROM wp_posts WHERE post_type = 'services' ORDER BY post_date DESC
10
NW Tech

Die CPT- und Taxonomiebegriffe werden über das Plugin erstellt. Ich konnte die Abfrage verringern, indem ich meinem Plugin Folgendes hinzufügte:

add_action( 'pre_get_posts', 'nwtd_lpfs_custom_admin_query' );
function nwtd_lpfs_custom_admin_query( $query ) {
    if( !is_admin() && !$query->is_main_query() ) {
         return;
     }
     if( is_post_type_archive( 'services' ) ) {
          $query->set('no_found_rows', 1 );
          $query->set('update_post_meta_cache', 0 );
          $query->set('update_post_term_cache', 0 );
     }
}

Derzeit habe ich mehr als 700 Posts, die an mehr als 1500 Taxonomiebegriffe gebunden sind, und alles funktioniert hervorragend. Die Posts werden fast augenblicklich angezeigt.

** Ich habe diesen Code nicht geschrieben. Jemand, mit dem ich direkt zusammenarbeite und der nicht Teil der WordPress Answers-Community ist, hat den Code bereitgestellt. Vielleicht kann er jemand anderem helfen, oder jemand anderes kann ihn möglicherweise erweitern, um ihn effizienter zu gestalten. **

4
NW Tech