Inclua Postes Positivos na Conta de Páginas Contagem?

Gostaria que 7 postagens apareçam na minha página inicial. Gostaria de poder escolher manualmente essas postagens pegando-as.

Atualmente, eu tenho minhas postagens por página configuradas para ‘7’ no WP Admin. No entanto, isso não inclui postagens legais, pois agora estou tendo 7 postagens adesivas + 7 postagens publicadas mais recentes exibidas para um total de 14 .

Como incluo as postagens pegajosas nas postagens por contagem de páginas?

Solutions Collecting From Web of "Inclua Postes Positivos na Conta de Páginas Contagem?"

Isso é possível, e como eu indiquei em um comentário, você deve seguir os seguintes passos

  • Obtenha uma contagem da quantidade de mensagens adesivas. Isso pode ser feito simplesmente contando get_option( 'sticky_posts' ) que contém os IDs das postagens adesivas na forma de uma matriz

  • Você também precisaria obter a quantidade de postagens por página. Você não quer codificar aqui. A quantidade de postagens por página é armazenada em get_option( 'posts_per_page' ) , então você vai usar isso

  • A parte importante agora é fazer uso de offsets para recalcular a quantidade de postagens para mostrar na página um da consulta principal. Como por exemplo no OP, se as postagens por página estiverem configuradas para 7, e há 4 mensagens adesivas, só queremos três postagens da consulta principal e não sete como padrão do site. A partir da página 2, ainda precisamos das 7 postagens normais para mostrar a partir da consulta principal, pois não teremos postagens adesivas aqui

  • Este deslocamento influenciará, no entanto, o cálculo da propriedade $max_num_pages na consulta principal, e o que isso significa é, na maioria dos casos, a última página estará faltando. Para corrigir isso, precisamos ajustar a quantidade de postagens encontradas, basicamente adicionando nossa compensação à quantidade real de posts encontrados para corrigir a quantidade de páginas. Isso será feito através do filtro found_posts

( NOTA: Este código agora está testado e está funcionando )

Aqui está a idéia básica no código:

 add_action( 'pre_get_posts', function ( $q ) { if ( $q->is_main_query() && $q->is_home() ) { $count_stickies = count( get_option( 'sticky_posts' ) ); $ppp = get_option( 'posts_per_page' ); $offset = ( $count_stickies < = $ppp ) ? ( $ppp - ( $ppp - $count_stickies ) ) : $ppp; if (!$q->is_paged()) { $q->set('posts_per_page', ( $ppp - $offset )); } else { $offset = ( ($q->query_vars['paged']-1) * $ppp ) - $offset; $q->set('posts_per_page',$ppp); $q->set('offset',$offset); } } }); add_filter( 'found_posts', function ( $found_posts, $q ) { if( $q->is_main_query() && $q->is_home() ) { $count_stickies = count( get_option( 'sticky_posts' ) ); $ppp = get_option( 'posts_per_page' ); $offset = ( $count_stickies < = $ppp ) ? ( $ppp - ( $ppp - $count_stickies ) ) : $ppp; $found_posts = $found_posts + $offset; } return $found_posts; }, 10, 2 );