tableau de bord WordPress, affichage des résultats CPT dans 504

10

J'ai créé un type d'article personnalisé avec une taxonomie personnalisée. J'ai environ 1500 postes qui sont tous affectés à une sorte de terme de taxonomie ... certains étant affectés à plus de 200 termes.

J'ai remarqué que l'affichage du type de publication personnalisée prend beaucoup de temps dans le tableau de bord, ce qui entraîne généralement un délai d'attente de la passerelle 504.

Interroger ces publications depuis le front-end est parfait et cela ne me pose aucun problème.

Je crois comprendre que lorsque le tableau de bord tente d'afficher ces types de publication personnalisés, il tente d'extraire toutes les informations attribuées à chaque publication avant de tout afficher.

Ce groupe d’installations WP est configuré pour pouvoir utiliser autant de mémoire que nécessaire (memory_limit = -1). Comme je le recherchais, certains disent que cela pourrait être lié à la mémoire.

Y a-t-il quelque chose que je puisse faire pour améliorer les performances de cette requête ... peut-être pas charger toutes les relations de terme de taxonomie d'une publication tant que vous n'avez pas modifié la publication?

Erreurs après l'augmentation de WP_MEMORY_LIMIT de 1 Go à 2 Go:

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
    
posée NW Tech 22.04.2013 - 07:12

1 réponse

4

Les termes CPT et de taxonomie sont créés via un plugin. J'ai pu réduire la requête en ajoutant ce qui suit à mon plugin:

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 );
     }
}

Actuellement, j'ai plus de 700 postes liés à plus de 1500 termes de taxonomie et tout fonctionne très bien. Les messages apparaissent presque instantanément.

** Je n'ai pas écrit ce code. Quelqu'un avec qui je travaille directement, qui ne fait pas partie de la communauté WordPress Answers, a fourni le code - cela peut peut-être aider quelqu'un d'autre, ou une autre personne peut éventuellement l'étendre pour le rendre plus efficace. **

    
réponse donnée NW Tech 26.04.2013 - 18:14

Lire d'autres questions sur les étiquettes