Melhorando WP_Query para desempenho quando as postagens aleatórias são encomendadas

Eu fiz uma nova consulta depois de ter feito uma pergunta sobre o meu código de query_posts … vocês não acharam isso ótimo, então eu decidi mudar isso.

Eu fiz isso:

$page = (get_query_var('paged')) ? get_query_var('paged') : 1; $rand = new WP_Query("showposts=10&orderby=rand&paged=$page"); while($rand->have_posts()) : $rand->the_post(); 

Minha pergunta é: como posso melhorar isso?

Não é melhor usar uma matriz? Então, o mesmo código, com uma matriz ou não?

Então, assim:

 $rand = new WP_Query( array( 'showposts' => '10', 'orderby' => rand ) ); 

Isso faria meu desempenho melhor?

E eu leio algo sobre como adicionar:

 'update_post_meta_cache' => false 

Para melhorar o desempenho se os termos não forem usados. Minha pergunta: quais são os termos de qualquer maneira? Eles estão tentando dizer tags e / ou categorias com isso?

Editar:

 function random_posts( $query ) { if ( $query->is_home() && !$query->is_paged() && $query->is_main_query() ) { $query->set( 'orderby', 'rand' ); } } 

E se eu usasse isso? Tenho que mudar meu WP_Query ou devo removê-lo? Não consigo o que pre_get_posts faz na verdade.

Solutions Collecting From Web of "Melhorando WP_Query para desempenho quando as postagens aleatórias são encomendadas"

O problema com orderby rand é que, na maioria das configurações, o database irá carregar todas as mensagens na memory e, em seguida, ordená-las aleatoriamente e retornar o que você pediu. É que carregar na memory que torna a consulta super lenta / cara

Sim, sim, os termos são categorias e tags individuais, onde categoria é uma taxonomia, e a categoria ‘desenvolvimento’ é um termo dessa taxonomia.

Finalmente, seu trecho de código inicial implica que você está usando um modelo de página ou tentando replace o que é mostrado na página. Isso é ruim, pois descarta a consulta principal e lança uma segunda consulta. O custo da primeira consulta ainda ocorre, mas é descartado, então é uma perda de tempo. É por isso que query_posts é considerado prejudicial, substituindo-o por um loop WP_Query personalizado não corrige isso. Considere usar pre_get_posts vez disso para interceptar a consulta principal e alterá-la