WordPress - pre_get_posts no lugar de query_posts nas páginas

Minha situação é um pouco complexa, tentarei explicar da maneira mais sucinta possível.

Atualmente estou usandoquery_posts modificar a consulta principal em páginas personalizadas no meu site, que, até onde eu sei, funciona muito bem, embora eu tenha lido que usar query_posts é uma prática recomendada por vários motivos diferentes.

Então, por que estou usandoquery_posts e não criando umWP_Query objeto que você pode perguntar?

É porque estou usando o plug-in infinito-scroll, o infinito-scroll não funciona bem com o WP_query, mas funciona absolutamente bem quando você simplesmente modifica a consulta principal com query_posts. Por exemplo, a paginação não funciona usando rolagem infinita + WP_query (preocupação principal).

Em uma página, estou modificando a consulta para obter as postagens mais visualizadas.

<?php $paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1; ?>     
<?php query_posts( array( 'meta_key' => 'wpb_post_views_count', 'orderby' => 'meta_value_num', 'order' => 'DESC' ,  'paged' => $paged, ) ); ?>     


<?php if (have_posts()) : ?>

<?php while ( have_posts() ) : the_post() ?>

    <?php if ( has_post_format( 'video' )) {
            get_template_part( 'video-post' );
        }elseif ( has_post_format( 'image' )) {
            get_template_part( 'image-post' );
        } else {
           get_template_part( 'standard-post' );
        }

    ?>

<?php endwhile;?>

<?php endif; ?>

Então, depois de muita leitura, entendo que minha outra opção para modificar a consulta principal está usandopre_get_posts, embora eu esteja um pouco inseguro sobre como fazer isso.

Veja isso por exemplo: -

function textdomain_exclude_category( $query ) {
    if ( $query->is_home() && $query->is_main_query() ) {
        $query->set( 'cat', '-1,-2' );
    }
}
add_action( 'pre_get_posts', 'textdomain_exclude_category' );

Tudo bem, tão simples - se for a página inicial, modifique a consulta principal e exclua duas categorias.

O que eu estou confuso e não consigo descobrir é: -

o cenário de caso de uso para modelos de página personalizados. Com minhaquery_posts modificação eu posso simplesmente soltar na matriz antesif (have_posts()), selecione o modelo da minha página, publique-o e agora eu vou. Compre_get_posts Não consigo descobrir como dizer, por exemplo$query->most-viewed etc

array( 'meta_key' => 'wpb_post_views_count', 'orderby' => 'meta_value_num', 'order' => 'DESC' , 'paged' => $paged, ) );

Como diabos eu faço isso compre_get_posts e verifique se está paginado, ou seja. trabalha com rolagem infinita? Em todos os exemplos que eu já vi compre_get_posts não há matrizes.

questionAnswers(2)

yourAnswerToTheQuestion