Tôi có cần sử dụng Vòng lặp trên các trang không?


8

Tôi đang viết chủ đề WordPress đầu tiên của mình và có một câu hỏi về việc sử dụng Vòng lặp trong các mẫu trang. Các mẫu trang mà tôi đã xem xét về cơ bản theo cùng một mẫu (ví dụ từ Twenty Tw 12):

<?php while ( have_posts() ) : the_post(); ?>
<?php get_template_part( 'content', 'page' ); ?>
<?php comments_template( '', true ); ?>
<?php endwhile; // end of the loop. ?>

Nhưng một trang sẽ chỉ có một bài đăng liên quan đến nó nên việc lặp qua các bài viết dường như không cần thiết. Mẫu trang của tôi dễ đọc hơn và dường như hoạt động tốt:

<?php
the_post();
the_title('<h1>', '</h1>');
the_content();
?>

Đây có phải là một thực hành tốt? Có bất kỳ nhược điểm?

Câu trả lời:


5

Theo Hướng dẫn chủ đề , nên sử dụng các vòng lặp đầy đủ, ngay cả trên các mẫu đơn.

Vòng lặp đầy đủ phải được sử dụng trong tất cả các mẫu. Chỉ gọi the_post()trong một mẫu như single.phphoặc page.phpkhông đủ.

Vì vậy, có, đó là một cách tốt nhất để sử dụng các vòng lặp đầy đủ.


9

Vấn đề tiềm năng (chỉnh sửa: chức năng) duy nhất tôi thấy là loop_endhành động sẽ không được gọi nếu bạn không gọi have_posts()sau cùng the_post(), vì vậy mọi thứ liên quan đến hành động đó sẽ không chạy.

Trong thực tế, tôi đã thực hiện theo cách đó trong các chủ đề của khách hàng và chưa bao giờ gặp phải sự cố nào, nhưng điều đó phụ thuộc vào các plugin có thể được sử dụng và liệu chúng có liên quan gì hay không loop_end.


Theo Hướng dẫn chủ đề , nên sử dụng các vòng lặp đầy đủ, ngay cả trên các mẫu đơn. "Các vòng lặp đầy đủ phải được sử dụng trong tất cả các mẫu. Chỉ cần gọi the_post () trong một mẫu như single.php hoặc page.php là không đủ." Vì vậy, có, đó là một cách tốt nhất để sử dụng các vòng lặp đầy đủ.
Dave Romsey

bạn có lẽ nên thêm nó như là một câu trả lời. nó là cần thiết nếu bạn muốn chủ đề của bạn được chấp nhận và phân phối trên WP.com hoặc org.
Milo

Được rồi, cảm ơn. Tôi sẽ. Tôi nghĩ rằng bạn đã trả lời nó bằng câu trả lời của bạn, vì vậy tôi nghĩ rằng tôi chỉ cần bổ sung nó với miếng ngon đó. Tôi chưa bao giờ nghĩ về điểm hành động loop_end mà bạn đưa ra. Tốt gọi đó.
Dave Romsey

Câu hỏi hay, tôi không đồng ý rằng accordig cho tài liệu, vòng lặp là bắt buộc trong tất cả các tệp mẫu, nhưng tôi nghĩ cả hai câu trả lời không giải thích TẠI SAO. Cụ thể tại sao cần phải chạy the_post () bên trong page.php vì tệp này hoàn toàn không phải hiển thị bất kỳ bài đăng nào!
GyRo

1
@GyRo một trang là một loại bài đăng. Điều đó là cần thiết bởi vì nó thiết lập dữ liệu mà các thẻ mẫu cần hoạt động đúng.
Milo
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.