2010-10-06 36 views
6

đây là vòng lặp cơ bảnWordpress vòng lặp chương trình giới hạn bài viết

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

tôi muốn hiển thị 20 bài viết trên trang kết quả tìm kiếm, tôi biết chúng tôi có thể thay đổi giá trị trên tùy chọn bảng quản trị. nhưng nó sẽ thay đổi tất cả trang chỉ mục và trang lưu trữ, v.v. Tôi cần phải có chúng khác nhau.

cảm ơn!

Trả lời

8

lớn tài liệu tham khảo: http://codex.wordpress.org/The_Loop

Ngay trước khi bạn gọi tuyên bố thời gian, bạn cần phải truy vấn các bài đăng nào. Vì vậy:

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

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

EDIT: Xin lỗi về sự pagination, hãy thử này:

<?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

Thật tuyệt vời! hoạt động tốt. Cảm ơn bạn! – ray

+1

Có vẻ như việc phân trang sẽ không hoạt động nữa! bất kỳ ý tưởng? – ray

+2

thay đổi 'posts_per_page' thành' showposts'? – Gipetto

0

Bạn có thể giới hạn số lượng bài đăng trên mỗi vòng lặp thông qua đối tượng $ wp_query. phải mất nhiều tham số ví dụ:

<?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--> 
?> 

Thông tin thêm về đối tượng wp_query here->

0

Add 'paged' => $ paged Pagination sẽ làm việc!

<?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

Câu trả lời với truy vấn mới bên trong mẫu sẽ không hoạt động chính xác với các loại bài tùy chỉnh.

Nhưng documentation đề nghị kết nối với bất kỳ truy vấn nào, kiểm tra xem đó là truy vấn chính và sửa đổi nó trước khi thực thi. Điều đó có thể được thực hiện bên trong các chức năng mẫu:

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

Tôi tìm thấy giải pháp này và nó phù hợp với tôi.

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 ... 
    } 
} 
Các vấn đề liên quan