Làm thế nào để có được số lượng bài viết thay đổi trên mỗi loại bài đăng trên vòng lặp chính?


8

Tôi đang tìm cách để cân bằng nội dung tại trang chủ của blog của mình:

blog có một vài loại bài đăng như Poscasts, Video và Blog và tôi muốn nói 10 bài đăng trên trang chủ, nhưng tôi muốn làm cho 5 trong số đó luôn là Blog mới nhất.

Làm 3 hộp riêng biệt không giải quyết được vấn đề của tôi vì các bài đăng được trộn lẫn với nhau và sẽ không có nhiều bài viết thuộc các loại khác.

Tôi có thể nghĩ ra giải pháp cho nó trên PHP thuần túy, nhưng tôi muốn có ý tưởng về cách thực hiện điều này bằng API wordpress, mọi trợ giúp, tham khảo sẽ được hoan nghênh!


Phải, đó là xa hiệu quả hoặc "cách đúng" để làm điều này, nhưng dù sao +1. Đánh giá cao những nỗ lực bạn đã làm để thể hiện những gì bạn muốn đạt được. :)
kaiser

1
Tôi khuyên bạn nên sử dụng cách làm tiêu chuẩn - các vòng lặp thứ cấp; chỉ phát hành 3 get_poststruy vấn; những điều này sẽ đi kèm với lợi ích bổ sung của bộ nhớ đệm (bất kỳ phụ trợ nào có sẵn) và bảo mật giữa những người khác. codex.wordpress.org/The_Loop#Mult Môn_Loops mà tôi chắc chắn bạn đã thấy.
soulseekah

+ 1 cho nỗ lực của bạn!
Rutwick Gangurde

Câu trả lời:


1

Nếu bạn vẫn đang tìm kiếm một giải pháp thay thế có thể nhanh hơn, điều này có thể giúp bạn:

<?php
function customBlogFeed() {

// The Query 
$the_query = new WP_Query( array ( 'post_type' => array( 'post', 'page', 'movie', 'book'), 'posts_per_page' => '6' ) );
//Your post_type array is a list of random post_types. You can add whatever you'd like to match your system.

// The Loop 
while ( $the_query->have_posts() ) : $the_query->the_post(); ?>


  <?php the_title(); ?>
      <?php the_content(); ?>

<?php endwhile;

// Reset Post Data
wp_reset_postdata();
}
?>

Sau đó, để có được đầu ra, hãy đặt <?php customBlogFeed(); ?>bất cứ nơi nào bạn muốn như thế này vào đầu ra.

Nếu bạn thực sự muốn có được sự ưa thích, bạn có thể nối vào Bộ lọc post_limits và giới hạn số lượng bài đăng trên mỗi loại bài đăng được hiển thị. Tôi hy vọng điều này sẽ giúp bạn trong nhiệm vụ của bạn.

PS - Nhìn vào WP_Query , nó thực sự sẽ giúp bạn hiểu.

Sau một số nghiên cứu, bạn thực sự có thể muốn xem xét post_clauses để thực hiện các đặc tính SQL đó với WP3.1 + Cú pháp


1

Vì vậy, sau một vài tháng. Tôi tìm thấy câu trả lời cho câu hỏi chính xác của bạn:

add_action('pre_get_posts', 'custom_main_query', 1);
function custom_main_query( $query ) {
  if ( $query->is_main_query() && is_home() ) { 
  //be super careful with this and to be safe, keep the is_home() 
  //bit there, I've had some funny results without it.

    $query->query_vars['posts_per_page'] = 3; //displays 3 posts ;)
    $query->query_vars['post_type'] = array('post'); //and if you wanted multiple cpts <3

    return $query;

    }
}

Chúc mừng

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.