Painel do WordPress, visualizando os resultados do CPT em 504

10

Eu criei um tipo de postagem personalizado com uma taxonomia personalizada. Tenho cerca de 1500 mensagens, todas atribuídas a algum tipo de termo de taxonomia ... sendo algumas atribuídas a mais de 200 termos.

Percebi que, a partir do painel, é preciso muito tempo para visualizar os tipos de postagem personalizados, na maioria das vezes resultando em um Tempo limite do gateway 504.

Consultar essas postagens do front-end é bom e não tenho problemas com isso.

Entendo que, quando o painel está tentando exibir esses tipos de postagem personalizados, está tentando extrair todas as informações atribuídas a cada postagem, antes de mostrar tudo.

Eu tenho este conjunto de instalação WP para poder usar tanta memória quanto necessário (memory_limit = -1), como eu estava pesquisando, alguns disseram que pode ser relacionado à memória.

Há algo que eu possa fazer para aumentar o desempenho dessa consulta ... talvez não carregar todos os relacionamentos de termos de taxonomia de um post até que você esteja editando o post?

Erros depois de aumentar WP_MEMORY_LIMIT de 1Gb para 2Gb:

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
    
por NW Tech 22.04.2013 / 07:12

1 resposta

4

Os termos de CPT e taxonomia são criados por meio do plug-in. Consegui diminuir a consulta adicionando o seguinte ao meu plug-in:

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

Atualmente, tenho mais de 700 postagens vinculadas a mais de 1500 termos de taxonomia e tudo está funcionando bem. As postagens estão aparecendo quase instantaneamente.

** Eu não escrevi este código. Alguém com quem trabalho diretamente, que não faz parte da comunidade WordPress Answers, forneceu o código - talvez ele possa ajudar alguém, ou alguém pode expandi-lo para torná-lo mais eficiente. **

    
por NW Tech 26.04.2013 / 18:14