Tableau de bord WordPress, affichage des résultats CPT en 504

10

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

J'ai remarqué qu'à partir du tableau de bord, il faut un temps extrêmement long pour afficher les types de publication personnalisés, la plupart du temps entraînant un délai d'expiration de la passerelle 504.

Interroger ces messages depuis le front-end est très bien et je n'ai aucun problème avec cela.

Je crois comprendre que lorsque le tableau de bord essaie d'afficher ces types de publication personnalisés, il essaie de récupérer toutes les informations affectées à chaque publication, avant qu'il ne montre tout.

J'ai cet ensemble d'installation WP pour pouvoir utiliser autant de mémoire que nécessaire (memory_limit = -1), comme je le faisais, certains ont dit qu'il pouvait être lié à la mémoire.

Y a-t-il quelque chose que je puisse faire pour augmenter les performances de cette requête ... peut-être ne pas charger toutes les relations de termes de taxonomie d'un article jusqu'à ce que vous éditiez l'article?

Erreurs après avoir augmenté WP_MEMORY_LIMITde 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
NW Tech
la source
FWIW, j'ai augmenté la mémoire de mon site WordPress à 2 Go et cela m'a permis de voir les messages, mais je reçois une multitude d'erreurs (ajoutées à la question d'origine). Y a-t-il quelque chose qui puisse être fait pour que la requête sur le back-end ne soit pas si lourde?
NW Tech
Lorsque vous mentionnez la visualisation des types de publication personnalisés à partir du tableau de bord, faites-vous référence à la visualisation de la liste des publications située sur wp-admin/edit.php?post_type=services?
bosco
@bosco C'est exact.
NW Tech
C'est énormément de mémoire à affecter à Wordpress. Êtes-vous hébergé, un VPS ou un serveur dédié? Il pourrait y avoir des problèmes sous-jacents plus profonds ici. Utilisez-vous Apache ou un autre serveur Web comme Nginx (peut-être les deux)?
Dwayne Charrington
Il s'agit d'un nouveau serveur (dv) avec MediaTemple. Le panneau de configuration est Plesk et le serveur exécute CentOS avec Apache et Nginx. Je ne veux pas affecter autant de mémoire, mais cela semblait être le seul moyen d'obtenir des résultats.
NW Tech

Réponses:

4

Les termes CPT et 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 );
     }
}

À l'heure actuelle, j'ai plus de 700 messages 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. Une personne avec qui je travaille directement, qui ne fait pas partie de la communauté WordPress Answers, a fourni le code - peut-être que cela peut aider quelqu'un d'autre, ou que quelqu'un d'autre peut éventuellement l'étendre pour le rendre plus efficace. **

NW Tech
la source