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

20

Nas Configurações de leitura, há um local 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.

Sei que posso 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 plugin 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?

    
por Doug 11.08.2010 / 21:52

4 respostas

23

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 as 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 () em um 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');
    
por kevtrout 11.08.2010 / 23:08
0

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

apenas uma declaração if simples junto com query_posts

    
por chrismccoy 11.08.2010 / 22:07
-1

Para adicionar a esta pergunta. Alguém sabe como determinar post_per_page para esta função função custom_posts_per_page ($ query) se adicionar a nova página ao index.php assim:

<?php
if ($_GET['new'] == 1) 
{
    include ( TEMPLATEPATH . '/newpage.php' );
    exit;
}
?>
    
por glazsasha 20.01.2011 / 09:56
-1
  

Sei que posso 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.

No interesse da conclusão, descobri que query_posts combinado com $query_string concatenação funciona bem.

Eu coloquei este código em index.php (meu tema não tem category.php) ...

<?php 
if (!is_front_page()) { 
    query_posts($query_string . "&posts_per_page=20"); 
}
?>

É claro que o que estamos fazendo aqui é modificar a string de consulta interna do loop, sobrescrevendo o número padrão de postagens por página .

Funciona muito bem em fornecer uma lista menor de postagens na página inicial, onde estou mostrando postagens completas, e uma lista muito maior de postagens em todos os lugares (categorias, por data, etc.), onde só estou mostrando resumos. / p>

No entanto, observe que, diferentemente da resposta aceita, isso executará a consulta duas vezes , por isso não é uma solução tão boa.

    
por Jeff Atwood 07.07.2011 / 01:25