web-development-kb-pt.site

Mostrar um número diferente de postagens por página, dependendo do contexto (por exemplo, página inicial, pesquisa, arquivo)

Nas Configurações de leitura, há lugar para definir o número de postagens mostradas que afeta o número de postagens exibidas em todos os contextos. Gostaria de mostrar um determinado número de postagens na página inicial e um número diferente de postagens em páginas como arquivamento, resultados de pesquisa etc.

reading-settings-blog-pages-show-at-most-per-page

Eu percebo que poderia fazer isso editando os arquivos de tema e alterando os parâmetros de consulta, mas prefiro ter acesso mais fácil a uma página de configurações simples. Há muito tempo, me deparei com um plug-in que fazia isso, mas não consigo localizá-lo agora.

Alguém sabe de um plugin para fazer isso, ou até mesmo uma função que eu poderia colocar em functions.php para realizar a mesma coisa?

21
Doug

Acredito que a melhor maneira de fazer isso em um plug-in é executar a seguinte função de amostra quando o gancho de ação pre_get_posts for encontrado. O objeto $wp_query está disponível, o que significa que suas tags condicionais estão disponíveis, mas antes que o WordPress obtenha as postagens, o que significa que você está alterando as consultas antes da primeira consulta ser executada, em vez de adicionar uma segunda consulta como quando query_posts () arquivo de tema.

function custom_posts_per_page($query) {
    if (is_home()) {
        $query->set('posts_per_page', 8);
    }
    if (is_search()) {
        $query->set('posts_per_page', -1);
    }
    if (is_archive()) {
        $query->set('posts_per_page', 25);
    } //endif
} //function

//this adds the function above to the 'pre_get_posts' action     
add_action('pre_get_posts', 'custom_posts_per_page');
23
kevtrout

você poderia fazer um loop personalizado usando query_posts e especificar o número de posts por is_home, is_archive, etc.

apenas uma declaração if simples, juntamente com query_posts

0
chrismccoy