Painel do WordPress, exibindo resultados de CPT em 504


10

Criei um tipo de postagem personalizado com uma taxonomia personalizada. Tenho cerca de 1500 posts, todos atribuídos a algum tipo de termo de taxonomia ... alguns sendo atribuídos a mais de 200 termos.

Percebi que, no painel, leva uma quantidade extremamente longa de tempo para exibir os tipos de postagem personalizados, resultando na maioria das vezes em um Tempo limite de 504 Gateway.

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

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

Eu tenho essa instalação do WP definida para poder usar a quantidade de memória necessária (memory_limit = -1), como eu estava pesquisando, alguns disseram que pode estar relacionado à memória.

Existe algo que eu possa fazer para aumentar o desempenho desta consulta ... talvez não carregue todos os relacionamentos de termos de taxonomia de uma postagem até que você esteja editando a postagem?

Erros após aumentar WP_MEMORY_LIMITde 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

FWIW, aumentei a memória do meu site WordPress para 2Gb e isso me permitiu ver as postagens, no entanto, estou recebendo uma série de erros (adicionados à pergunta original). Existe algo que possa ser feito para tornar a consulta no back-end não tão pesada?
NW Tech

Ao mencionar a exibição dos tipos de postagem personalizados no painel, você está se referindo à exibição da lista de postagens localizada em wp-admin/edit.php?post_type=services?
bosco

@bosco Isso está correto.
NW Tech

Essa é uma quantidade enorme de memória para atribuir ao Wordpress. Você está em hospedagem compartilhada, um VPS ou servidor dedicado? Pode haver questões subjacentes mais profundas aqui. Você está usando o Apache ou outro servidor da web como o Nginx (talvez ambos)?
Dwayne Charrington 26/04

Este é um novo servidor (dv) com o MediaTemple. O painel de controle é o Plesk e o servidor está executando o CentOS com Apache e Nginx. Não quero atribuir tanta memória, mas parecia a única maneira de obter resultados.
NW Tech

Respostas:


4

Os termos CPT e taxonomia são criados via plugin. Consegui diminuir a consulta adicionando o seguinte ao meu 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 );
     }
}

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

** Eu não escrevi esse 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 possa expandi-lo para torná-lo mais eficiente. **

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.