Hiển thị tất cả các bài viết bắt đầu bằng chữ cái đã cho?


11

Tôi đang cố gắng xây dựng từ điển dựa trên Wordpress, về cơ bản nó sẽ có 26 trang (mỗi trang cho mỗi chữ cái):

ABC ... XYZ

Và mỗi trang sẽ hiển thị tất cả các bài đăng bắt đầu bằng chữ cái đã cho, vì vậy sau khi mở trang "A", nó sẽ hiển thị một cái gì đó như:

ngạc nhiên

bàn tính

bào ngư

(...)

Tôi đã suy nghĩ về các loại bài đăng tùy chỉnh lúc đầu, nhưng việc tạo và duy trì 26 loại bài đăng tùy chỉnh nghe có vẻ quá mức.

Điều gì sẽ là cách hiệu quả nhất để sắp xếp bài viết như vậy? Truy vấn cơ sở dữ liệu, tách vòng lặp với PHP? Tôi đang nhắm tới 1000 bài đăng (vâng, nó phải là Wordpress :)).

Câu trả lời:


9

Đừng sử dụng các loại bài đăng, sử dụng thuật ngữ phân loại!

Khi lưu, hãy đặt các thuật ngữ đối tượng trong phân loại AZ, sử dụng chữ cái đầu tiên của tiêu đề bài viết. Hãy chắc chắn để buộc chữ hoa hoặc chữ thường cho thống nhất. Đảm bảo tạo các thuật ngữ cho mỗi chữ cái trong bảng chữ cái và thuật ngữ cho các số và các ký hiệu không chữ và số khác.

Điều này sẽ nhanh hơn truy vấn chữ cái đầu tiên của mỗi tiêu đề bài đăng và nó cung cấp cho bạn một phân loại bạn có thể làm nhiều thứ hơn với, như các đám mây thẻ hoặc các widget danh sách thuật ngữ! Đây cũng là một cách nhanh hơn để xác định các chữ cái có bài đăng liên quan và số lượng bao nhiêu, mà không buộc cơ sở dữ liệu phải đếm thủ công và bạn có thể sử dụng API thuật ngữ WordPress tiêu chuẩn ngoài hộp để thực hiện các truy vấn phức tạp hơn, như các bài đăng bắt đầu bằng nguyên âm


Đây chắc chắn là con đường lý tưởng để đi. Tuy nhiên, hãy ghi nhớ, với hàng ngàn bài viết; Đây có thể là một nhiệm vụ khá cồng kềnh. Ban đầu, bạn cần truy vấn tất cả các bài đăng bắt đầu bằng mỗi chữ cái của bảng chữ cái và cập nhật từng bài đăng với thuật ngữ phân loại thích hợp, khớp với chữ cái tương ứng của bảng chữ cái. Nếu không, cập nhật thủ công từng bài đăng cá nhân sẽ mất nhiều thế kỷ để hoàn thành.
Michael Ecklund

Vâng, đó là một nhược điểm HẤP DẪN, những bài đăng này sẽ được thêm vào bởi TOTALLY những người không biết gì và tôi không thể tin vào chúng khi nói đến việc phân loại đúng trong khi tạo bài đăng mới. Tôi không chắc chắn nếu truy vấn tất cả các bài đăng và cập nhật chúng mỗi khi ai đó chỉnh sửa / tạo một cái gì đó sẽ hiệu quả?
Wordpressor

3
Không, đó hoàn toàn không phải là một vấn đề, hãy ẩn UI và tự động hóa process.do nó trên lưu và cập nhật hook hook, thực hiện thủ công sẽ rất tốn kém
Tom J Nowell

Tom J Nowell, nó hoạt động như một bùa mê, nhưng tôi có một vấn đề nghiêm trọng và tôi không chắc cách quản lý này - một số từ sẽ bắt đầu bằng các chữ cái như en.wikipedia.org/wiki/Ą - Tôi không thể đặt điều khoản cho những điều này. Đây là một số mã và giải thích: pastebin.com/cHxbjVFH , tại sao điều đó xảy ra? Tôi đang sử dụng gói WP dành riêng cho ngôn ngữ này.
Wordpressor

bạn đang nói về điểm nhấn và âm sắc vv vv? Nếu vậy thì đó là một cái gì đó xứng đáng với một câu hỏi hoàn toàn mới theo cách riêng của nó, và không phải là một câu hỏi tầm thường để hỏi. Có khả năng đây cũng là một câu hỏi chung về PHP và vì vậy Stack Overflow sẽ là nơi tốt nhất để hỏi nó
Tom J Nowell

4

Nếu bạn không muốn sử dụng phương pháp Phân loại ưu tiên, hãy làm điều này:

<ul class="posts">
         <?php 
         global $wpdb; 
         $request = "a" // could be any letter you want
         $results = $wpdb->get_results(
                "
                SELECT * FROM $wpdb->posts
                WHERE post_title LIKE '$request%'
                AND post_type = 'post'
                AND post_status = 'publish'; 
                "
         ); 
         if ( $results ) 
         {
            foreach ( $results as $post ) 
            {
                setup_postdata ( $post ); 
                ?> 
                <li>
                    ... loop stuff here (the_title, the_permalink) ... 
                </li>
                <?php 
            }
         } 
         else 
         {
            ?> 
            <div class="alert">No clubs found for that letter. Please try again, or use the search at the top.</div>
            <?php
         }
         ?>
    </ul>

bạn có thể giải thích làm thế nào điều này làm việc? nó sẽ không trả lại bất kỳ bài viết có chứa thư?
Thuốc nhuộm màu Zea

1

Kiểm tra bài viết này ở đây: query_post theo tiêu đề?

Hoặc bạn có thể tạo trình trợ giúp lưu trước bằng cách sử dụng khung PODS 2 và lưu chữ cái đầu tiên của tiêu đề bài đăng trong một số trường và sử dụng điều kiện WHERE đơn giản.

Hoặc tạo một danh sách thả xuống (một nhóm / nội dung khác) với tất cả các chữ cái và tạo mối quan hệ với bạn loại nội dung bài đăng hiện có (trong nhóm 2 có thể) và đó là điều đó. Vì vậy, trước khi lưu thuật ngữ từ điển bạn chọn từ hộp thả xuống chữ cái bạn muốn gán cho thuật ngữ này.

Trong Pods 2, bạn có thể thêm trường bổ sung vào loại nội dung bài đăng hiện có. Plugin / framework này giống như CCK + Views trong thế giới Drupal thực sự tuyệt vời.

Pods 2 là plugin rất hữu ích.

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.