Vòng lặp danh mục WordPress

trong vòng lặp nó lặp lại 3 bài viết giống nhau và tôi không biết cách tạo vòng lặp như thế nào cho đúng cách khi nhấp vào danh mục tôi phải xem bài đăng liên quan đến nó nhưng nó không xảy ra nó chỉ lặp lại 3 bài viết giống nhau. tôi sử dụng Bootstrap 4 – jQuery [Đây là Mã]

    by

Ghi chú. Nếu bạn sử dụng ví dụ này cho trang chính của mình, bạn nên sử dụng một Mẫu khác cho kho lưu trữ Danh mục của mình; . Tuy nhiên, nếu bạn muốn sử dụng cùng một tệp mẫu, bạn có thể tránh điều này bằng cách sử dụng thẻ is_home[] để đảm bảo rằng các bài đăng từ Danh mục 3 và Danh mục 8 sẽ chỉ bị loại khỏi trang chính

...
have_posts[] ] : while [ $query->have_posts[] ] : $query->the_post[]; 
} else {
...
?>
...

Có các Thẻ điều kiện khác có thể được sử dụng để kiểm soát đầu ra tùy thuộc vào việc một điều kiện cụ thể có đúng hay không đối với trang được yêu cầu

hướng đối tượng

Vòng lặp là sự kết hợp của hành vi hướng đối tượng và toàn cầu. Điều này ban đầu gây nhầm lẫn

Hai biến toàn cục quan trọng cho các vòng lặp là

  • $wp_query là một đối tượng của lớp WP_Query, chứa kết quả truy vấn cơ sở dữ liệu WP trong đó $wp_query->posts, một mảng các WP_Posts riêng lẻ
  • $post là đối tượng hiện tại của lớp WP_Post

have_posts[] và the_post[] là các hàm toàn cục gọi các phương thức $wp_query->have_posts[] và $wp_query->the_post[] tương ứng của biến toàn cục $wp_query

the_post[] trông giống như một thẻ mẫu, nhưng không phải. Nó không tạo đầu ra mà thay vào đó thay đổi trạng thái của các biến toàn cục $wp_query và $post. the_post[] yêu cầu WordPress chuyển sang bài đăng tiếp theo. Nó thay đổi $wp_query->current_post, và khởi tạo biến toàn cục $post cho bài viết tiếp theo chứa trong mảng $wp_query->posts

Nhớ lại. Theo mặc định, tất cả các thẻ mẫu đều dựa vào biến toàn cục $post và biến toàn cầu $post được thiết lập/sửa đổi bởi the_post[], biến này lấy dữ liệu từ biến toàn cục $wp_query. $post cũng được đặt/sửa đổi bởi WP_Query. the_post[] như được sử dụng trong các vòng lặp thứ cấp

Nhiều vòng lặp

Phần này đề cập đến việc sử dụng The Loop nâng cao. Đó là một chút kỹ thuật, nhưng đừng để điều đó làm bạn sợ. Chúng tôi sẽ bắt đầu với một ví dụ dễ dàng và làm việc từ đó. Với một chút ý thức chung, sự kiên nhẫn và nhiệt tình, bạn cũng có thể thực hiện nhiều vòng lặp

Trước hết, tại sao một người muốn sử dụng nhiều vòng lặp? . "Một cái gì đó" có thể có nghĩa là hầu hết mọi thứ;

Chúng tôi sẽ đi vào các ví dụ bên dưới, nhưng trước tiên bạn nên đọc về những điều cơ bản. Hãy xem Vòng lặp cơ bản. Nó bao gồm

________số 8

Tiếng Anh [loại PHP và ai rành về code có thể bỏ qua phần bên dưới], phần trên sẽ được đọc. Nếu chúng tôi sắp hiển thị các bài đăng, thì hãy lấy chúng, từng cái một. Đối với mỗi bài đăng trong danh sách, hãy hiển thị nó theo. Khi bạn nhấn bài cuối cùng, hãy dừng lại. [Các] dòng công việc phụ thuộc vào mẫu

Một chút sang một bên về Làm công cụ. trong ví dụ này, nó chỉ đơn giản là một trình giữ chỗ cho một loạt mã xác định cách định dạng và hiển thị từng bài đăng trên một trang. Mã này có thể thay đổi tùy thuộc vào cách bạn muốn WordPress của mình trông như thế nào. Nếu bạn nhìn vào chỉ mục của chủ đề Kubrick. php phần làm công cụ sẽ là mọi thứ bên dưới

Ở trên

Một lời giải thích cho các lập trình viên ngoài kia. have_posts[] và the_post[] là các trình bao bọc thuận tiện xung quanh đối tượng $wp_query toàn cục, là nơi chứa tất cả các hành động. $wp_query được gọi trong tiêu đề blog và các đối số truy vấn được cung cấp thông qua GET và PATH_INFO. $wp_query lấy các đối số, xây dựng và thực thi một truy vấn DB dẫn đến một loạt các bài đăng. Mảng này được lưu trữ trong đối tượng và cũng được trả về tiêu đề blog nơi nó được đưa vào mảng $posts toàn cầu [để tương thích ngược với các vòng lặp bài đăng cũ]

Khi WordPress đã tải xong tiêu đề blog và đang đi xuống mẫu, chúng tôi sẽ đến bài đăng của chúng tôi Vòng lặp. have_posts[] chỉ cần gọi vào $wp_query->have_posts[] để kiểm tra bộ đếm vòng lặp để xem liệu có bất kỳ bài đăng nào còn lại trong mảng bài đăng không. Và the_post[] gọi $wp_query->the_post[] để tăng bộ đếm vòng lặp và thiết lập biến $post toàn cầu cũng như tất cả dữ liệu bài đăng toàn cầu. Khi chúng tôi đã sử dụng hết vòng lặp, have_posts[] sẽ trả về false và chúng tôi đã hoàn thành

Ví dụ vòng lặp

Dưới đây là ba ví dụ về việc sử dụng nhiều vòng lặp. Chìa khóa để sử dụng nhiều vòng lặp là $wp_query chỉ có thể được gọi một lần. Để giải quyết vấn đề này, có thể sử dụng lại truy vấn bằng cách gọi rewind_posts[] hoặc bằng cách tạo một đối tượng truy vấn mới. Điều này được đề cập trong ví dụ 1. Trong ví dụ 2, việc sử dụng một biến để lưu trữ kết quả của một truy vấn đã được đề cập. Cuối cùng, 'nhiều vòng lặp hoạt động' tập hợp nhiều ý tưởng lại với nhau để ghi lại một cách sử dụng nhiều vòng lặp để quảng cáo các bài đăng thuộc một danh mục nhất định trên trang chủ blog của bạn

Nhiều vòng lặp Ví dụ 1

Để lặp lại cùng một truy vấn lần thứ hai, hãy gọi rewind_posts[]. Thao tác này sẽ đặt lại bộ đếm vòng lặp và cho phép bạn thực hiện một vòng lặp khác


                

1

Nếu bạn đã hoàn thành các bài đăng trong truy vấn ban đầu và bạn muốn sử dụng một truy vấn khác, bạn có thể sử dụng lại đối tượng $wp_query bằng cách gọi query_posts[] rồi lặp lại. query_posts[] sẽ thực hiện truy vấn mới, tạo mảng bài đăng mới và đặt lại bộ đếm vòng lặp

	

0

Nếu bạn cần giữ lại truy vấn ban đầu, bạn có thể tạo một đối tượng truy vấn mới

	

1

Đối tượng truy vấn my_query được sử dụng vì bạn không thể sử dụng have_posts[] và the_post[] chung vì cả hai đều sử dụng $wp_query. Thay vào đó, hãy gọi vào đối tượng $my_query mới của bạn

Nhiều vòng lặp Ví dụ 2

Một phiên bản khác của việc sử dụng nhiều Vòng lặp cần một giải pháp khác để giải quyết vấn đề không thể sử dụng have_posts[] và the_post[]. Để giải quyết vấn đề này, bạn cần lưu truy vấn ban đầu vào một biến, sau đó gán lại nó với Vòng lặp khác. Bằng cách này, bạn có thể sử dụng tất cả các chức năng tiêu chuẩn dựa trên tất cả các toàn cầu

Ví dụ

	

2

Ghi chú. Trong PHP 5, các đối tượng được tham chiếu bằng toán tử "= clone" thay vì "=" như trong PHP 4. Để làm cho Ví dụ 2 hoạt động trong PHP 5, bạn cần sử dụng đoạn mã sau

	

2

Tuy nhiên, ví dụ thứ hai này không hoạt động trong WordPress 2. 1

Nhiều vòng lặp trong hành động

Cách tốt nhất để hiểu cách sử dụng nhiều vòng lặp là hiển thị một ví dụ thực sự về việc sử dụng nó. Có lẽ cách sử dụng nhiều vòng lặp phổ biến nhất là hiển thị hai [hoặc nhiều hơn] danh sách các bài đăng trên một trang. Điều này thường được thực hiện khi quản trị viên web muốn giới thiệu không chỉ bài đăng mới nhất được viết mà còn cả các bài đăng từ một danh mục nhất định

Bỏ tất cả các vấn đề về định dạng và CSS sang một bên, giả sử chúng ta muốn có hai danh sách bài đăng. Một danh sách sẽ liệt kê các bài đăng gần đây nhất [10 bài đăng tiêu chuẩn được thêm gần đây nhất] và một bài đăng khác chỉ chứa một bài đăng từ danh mục 'nổi bật'. Các bài đăng trong danh mục 'nổi bật' phải được hiển thị đầu tiên, tiếp theo là danh sách bài đăng thứ hai [tiêu chuẩn]. Điều hấp dẫn là không có bài đăng nào xuất hiện trong cả hai danh mục

Bước 1. Chỉ nhận một bài đăng từ danh mục 'nổi bật'

	

4

Trong tiếng Anh đoạn mã trên sẽ đọc

Đặt $my_query bằng kết quả của việc truy vấn tất cả các bài đăng trong đó danh mục được đặt tên là nổi bật và nhân tiện, hãy chỉ cho tôi một bài đăng. Ngoài ra, hãy đặt biến $do_not_duplicate bằng số ID của một bài đăng được trả về. Nhớ lại rằng dòng Công việc đại diện cho tất cả các tùy chọn định dạng được liên kết cho bài đăng được truy xuất

Lưu ý rằng chúng tôi sẽ cần giá trị của $do_not_duplicate trong bước tiếp theo để đảm bảo rằng cùng một bài đăng không xuất hiện trong cả hai danh sách

Bước 2. Vòng lặp thứ hai, nhận X bài đăng mới nhất [ngoại trừ một]

Đoạn mã sau lấy X bài đăng gần đây [như được xác định trong tùy chọn WordPress] lưu bài đã được hiển thị từ vòng lặp đầu tiên và hiển thị chúng theo Công cụ

	

5

Trong tiếng Anh đoạn mã trên sẽ đọc

Nhận tất cả các bài đăng, trong đó một bài đăng bằng $do_not_duplicate thì không cần làm gì [tiếp tục], nếu không thì hiển thị tất cả các bài đăng khác theo Công cụ. Ngoài ra, hãy cập nhật bộ đệm để plugin gắn thẻ và từ khóa hoạt động tốt. Nhớ lại, biến $do_not_duplicate chứa ID của bài viết đã được hiển thị

Kết quả cuối cùng

Đây là đoạn mã cuối cùng trông như thế nào khi không có bất kỳ định dạng nào

	

6

Kết quả cuối cùng sẽ là một trang có hai danh sách. Danh sách đầu tiên chỉ chứa một bài đăng -- bài đăng gần đây nhất từ ​​danh mục 'tính năng'. Danh sách thứ hai sẽ chứa X bài đăng gần đây [như được xác định trong tùy chọn WordPress] ngoại trừ bài đăng đã được hiển thị trong danh sách đầu tiên. Vì vậy, một khi bài đăng nổi bật được thay thế bằng một bài đăng mới, tính năng trước đó sẽ hiển thị trong phần danh sách bài đăng tiêu chuẩn bên dưới [tùy thuộc vào số lượng bài đăng bạn chọn hiển thị và tần suất đăng]. Kỹ thuật này [hoặc tương tự] đã được nhiều người sử dụng cùng với kiến ​​thức về Hệ thống phân cấp mẫu để tạo giao diện khác cho trang chủ. php và chỉ mục. php. Xem các tài nguyên liên quan ở cuối trang này

Lưu ý cho nhiều bài viết trong danh mục đầu tiên

Nếu posts_per_page=2 trở lên, bạn sẽ cần thay đổi mã một chút. Biến $do_not_duplicate cần được thay đổi thành một mảng thay vì một giá trị. Nếu không, vòng lặp đầu tiên sẽ kết thúc và biến $do_not_duplicate sẽ chỉ bằng id của bài viết mới nhất. Điều này sẽ dẫn đến các bài đăng trùng lặp trong vòng lặp thứ hai. Để khắc phục sự cố thay thế

	

7

với

	

8

Lưu ý rằng "posts_per_page" có thể là bất kỳ số nào. Điều này thay đổi $do_not_duplicate thành một mảng. Sau đó thay thế

	

9

với

0

Nơi bạn tiếp tục mẫu cho bất kỳ posts_per_page nào được đặt bằng [2 trong trường hợp này]

Ngoài ra, bạn có thể chuyển toàn bộ mảng $do_not_duplicate cho $wp_query và chỉ các mục phù hợp với tiêu chí của bạn mới được trả về

1

Lưu ý rằng thay vì một chuỗi, tham số truy vấn là một mảng kết hợp đặt tùy chọn post__not_in

Vòng lồng nhau

Vòng lặp lồng nhau có nghĩa là bạn đang chạy vòng lặp thứ hai trước khi kết thúc vòng lặp đầu tiên. Điều này có thể hữu ích để hiển thị danh sách bài đăng với một mã ngắn chẳng hạn

2

Cần thiết lập lại dữ liệu vòng lặp chính sau một vòng lặp lồng nhau để một số biến toàn cục giữ lại giá trị đúng

nguồn

Phần về nhiều vòng lặp là sự kết hợp giữa cuộc thảo luận của Ryan Boren và Alex King về Vòng lặp trong Danh sách gửi thư của tin tặc. Ví dụ về vòng lặp lồng nhau được lấy cảm hứng từ một cuộc thảo luận khác trên danh sách gửi thư và một bài đăng của Nicolas Kuttler

Tài nguyên

Để tìm hiểu thêm về Vòng lặp WordPress và các thẻ mẫu khác nhau chỉ hoạt động trong Vòng lặp, đây là các tài nguyên khác

Vòng lặp WordPress chạy bao lâu một lần?

Vòng lặp WordPress chạy bao lâu một lần? . Ngay cả trên các trang tĩnh, nó lặp qua nội dung có sẵn. Tuy nhiên, trong trường hợp này, nó dừng lại sau một lượt. Until there is nothing left to display. Even on static pages it loops through the available content. However, in this case, it stops after one pass.

Vòng lặp trang WordPress là gì?

Vòng lặp WordPress là gì? . Các chủ đề WordPress sử dụng một vòng lặp để hiển thị các bài đăng trên các trang web hiện tại. Vòng lặp dựa trên một số chức năng được thiết kế để hiển thị các bài đăng bằng cách chạy các chức năng này. A PHP code that displays WordPress posts is called a loop or WordPress loop. WordPress themes use a loop to display the posts on the current web pages. Loop is based on some functions designed to display the posts by running these functions.

Chủ Đề