2010-10-06 17 views
6

Jest to podstawowy pętliWordpress pętla Pokaż graniczne posty

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

Chcę pokazać 20 postów na stronie wyników wyszukiwania, wiem, że możemy zmienić wartość opcji w panelu administracyjnym. ale zmieni to wszystkie strony indeksowe i archiwalne itd. Muszę je mieć inaczej.

dziękuję!

Odpowiedz

8

Wielki referencyjny: http://codex.wordpress.org/The_Loop

Tuż przed wywołaniem while trzeba kwerendy posty. Więc:

<?php query_posts('posts_per_page=20'); ?> 

    <?php while (have_posts()) : the_post(); ?> 
    <!-- Do stuff... --> 
    <?php endwhile;?> 

EDIT: Niestety o paginacji, spróbuj tego:

<?php 
     global $query_string; 
     query_posts ('posts_per_page=20'); 
     if (have_posts()) : while (have_posts()) : the_post(); 
    ?> 
    <!-- Do stuff --> 
    <?php endwhile; ?> 

    <!-- pagination links go here --> 

    <? endif; ?> 
+0

To świetnie! działa dobrze. Dziękuję Ci! – ray

+1

Wygląda na to, że podział na strony nie będzie już działał! dowolny pomysł? – ray

+2

zmienić 'posts_per_page' na' showposts'? – Gipetto

0

Możesz ograniczyć liczbę postów na pętlę za pośrednictwem obiektu $ wp_query. zajmuje wiele parametrów, na przykład:

<?php 
$args = array('posts_per_page' => 2, 'post_type' => 'type of post goes here'); 
$query = new WP_Query($args); 
while($query->have_posts()) : $query->the_post(); 
<!-- DO stuff here--> 
?> 

Więcej na obiekcie wp_query here->

0

Dodaj 'pager' => $ pager paginacja będzie działać!

<?php 
$args = array('posts_per_page' => 2, 'paged' => $paged); 
$query = new WP_Query($args); 
while($query->have_posts()) : $query->the_post(); 
<!-- DO stuff here--> 
?> 
1

Odpowiedzi z nowym zapytaniem wewnątrz szablonu nie będą działać poprawnie z niestandardowymi typami wpisów.

Ale documentation oferuje haczyk na każde zapytanie, sprawdź, czy jest to główne zapytanie i zmodyfikuj je przed wykonaniem. Można to zrobić wewnątrz funkcji szablonu:

function my_post_queries($query) { 
    // do not alter the query on wp-admin pages and only alter it if it's the main query 
    if (!is_admin() && $query->is_main_query()) { 
    // alter the query for the home and category pages 
    if(is_home()){ 
     $query->set('posts_per_page', 3); 
    } 

    if(is_category()){ 
     $query->set('posts_per_page', 3); 
    } 
    } 
} 
add_action('pre_get_posts', 'my_post_queries'); 
0

Znajduję to rozwiązanie i działa dla mnie.

global $wp_query; 
$args = array_merge($wp_query->query_vars, ['posts_per_page' => 20 ]); 
query_posts($args); 

if(have_posts()){ 
    while(have_posts()) { 
    the_post(); 
    //Your code here ... 
    } 
} 
Powiązane problemy