Como mostrar mais postagens aleatórias se Tag tiver menos de 3 posts

Quando o número de postagens nas páginas de tags é inferior a 3.
Eu quero mostrar mais posts relacionados ou randoms, para preencher o número máximo de posts por página, que é 10.

Como conseguir isso? É possível verificar o número de postagens no loop dentro do loop wordpress padrão?

Eu uso o loop wordpress padrão que essencialmente parece assim.

  // posts   

Eu tentei mudar este loop para wp_query, mas não posso fazê-lo funcionar e prefiro ficar com o padrão, mas, em seguida, com o padrão, talvez não seja possível?

Solutions Collecting From Web of "Como mostrar mais postagens aleatórias se Tag tiver menos de 3 posts"

Há duas etapas para que isso funcione:

  1. Adicione um contador ao seu loop principal, para que você possa verificar quantas postagens são emitidas.

  2. Se o seu contador for inferior a 3, execute uma segunda consulta e saída.

Então, para o passo 1, defina um contador antes do seu loop e incremente-o sempre que o loop for executado, assim:

 < ?php // create your counter variable $counter = 0; if (have_posts()) : while (have_posts()) : the_post(); // add 1 to your counter, as 1 post was just output $counter++; // (display the posts) endwhile; endif; ?> 

Etapa 2: verifique sua variável do contador, então execute outra consulta, se necessário.

 < ?php // if counter is less than 3, run a separate query if($counter < 3) { // get the ID of the current Tag $tag_id = get_queried_object()->term_id; // set up query arguments $args = array( // only pull Posts 'post_type' => 'post', // don't pull Posts that have the current Tag - prevents duplicates 'tag__not_in' => array("$tag_id"), // set how many Posts to grab 'posts_per_page' => 3 ); $extraPosts = new WP_Query($args); if($extraPosts->have_posts()): while($extraPosts->have_posts()) : $extraPosts->the_post(); // display the posts) endwhile; endif; } ?> 

Se você deseja que o Arquivo de Tag sempre mostre exatamente 3 posts, então, logo após a parte de abertura da instrução “if”, calcule quantos obter:

 $numberToGet = 3 - $counter; 

em seguida, configure 'posts_per_page' => "$numberToGet" para que seja dynamic.

Sim, você pode, embora eu não recomendaria usar páginas aleatórias, pois qualquer coisa envolvendo aleatoriedade é muito ruim para o desempenho, a escala do tráfego e os tempos de carregamento da página

Sobre $wp_query

O motivo de troca de have_posts para $wp_query->have_posts() não fará nada é duplo:

  • você deve realmente verificar as 3 postagens
  • eles são exatamente o mesmo

$wp_query é uma variável global, e representa a consulta principal, have_posts e the_post etc são todos wrappers para global $wp_query; $wp_query->the_post() global $wp_query; $wp_query->the_post() etc, onde $wp_query é um object WP_Query

Agora que sabemos que é um object WP_Query , podemos google e observar documentos de classs e ver que tem uma variável de membro chamada:

$found_posts

O número total de posts encontrados que correspondem aos parâmetros de consulta atuais

Então seu cheque seria:

 // after the main loop global $wp_query; if ( 4 > $wp_query->found_posts ) { // do something to make up the numbers here } 

Que algo poderia ser fazer outra consulta para as postagens mais recentes, ou postagens pré-escolhidas, uma propaganda, quem sabe, talvez até um loop WP_Query , mas esse é o assunto de outra questão