Tampilkan semua posting dimulai dengan huruf yang diberikan?

12

Saya mencoba membuat kamus berbasis Wordpress, pada dasarnya akan memiliki 26 halaman (satu untuk setiap huruf):

ABC ... XYZ

Dan setiap halaman akan menampilkan semua posting dimulai dengan huruf yang diberikan, jadi setelah membuka halaman "A" itu akan menampilkan sesuatu seperti:

kembali

sempoa

pauhi

(...) biru

Saya berpikir tentang jenis posting kustom pada awalnya, tetapi membuat dan memelihara 26 jenis posting kustom terdengar seperti berlebihan.

Apa yang akan menjadi cara paling efisien untuk mengurutkan posting seperti itu? Basis data query, memisahkan loop dengan PHP? Saya bertujuan untuk 1000-an posting (ya, itu harus Wordpress :)).

Wordpressor
sumber

Jawaban:

10

Jangan gunakan jenis posting, gunakan istilah taksonomi!

Pada save, atur istilah objek dalam taksonomi AZ, menggunakan huruf pertama dari judul tulisan. Pastikan untuk memaksa huruf besar atau kecil untuk konsistensi. Pastikan untuk membuat istilah untuk setiap huruf alfabet, dan istilah untuk angka dan simbol non alfanumerik lainnya.

Ini harus lebih cepat daripada menanyakan huruf pertama dari setiap judul posting, dan memberi Anda taksonomi yang dapat Anda lakukan lebih banyak hal, seperti tag cloud, atau widget istilah lister! Ini juga merupakan cara yang jauh lebih cepat untuk menentukan surat mana yang telah dikaitkan pos dan berapa banyak, tanpa memaksa database untuk menghitung secara manual, dan Anda dapat menggunakan API istilah WordPress standar di luar kotak untuk melakukan kueri yang lebih kompleks, seperti posting yang dimulai dengan vokal

Tom J Nowell
sumber
Ini jelas merupakan rute yang ideal untuk ditempuh. Namun, perlu diingat, dengan ribuan posting; Ini bisa menjadi tugas yang cukup rumit. Anda harus terlebih dahulu menanyakan semua posting yang dimulai dengan setiap huruf dari alfabet, dan memperbarui setiap posting dengan istilah taksonomi yang tepat, sesuai dengan huruf alfabet yang terkait. Jika tidak, memperbarui setiap posting secara manual akan membutuhkan waktu berabad - abad untuk diselesaikan.
Michael Ecklund
Ya, itu adalah kelemahan BESAR, posting-posting ini akan ditambahkan oleh orang-orang yang BENAR - BENAR bodoh dan saya tidak dapat mengandalkan mereka ketika datang untuk menetapkan taksonomi yang tepat saat membuat posting baru. Saya tidak yakin apakah meminta semua posting dan memperbaruinya setiap kali seseorang mengedit / membuat sesuatu akan efisien?
Wordpressor
3
Tidak, itu tidak akan menjadi masalah sama sekali, sembunyikan UI dan otomatisasi prosesnya. Lakukan di save dan perbarui kait posting, melakukannya secara manual akan sangat mahal
Tom J Nowell
Tom J Nowell, ini berfungsi seperti pesona, tetapi saya memiliki satu masalah serius dan saya tidak yakin bagaimana cara mengaturnya - beberapa kata akan dimulai dengan huruf seperti en.wikipedia.org/wiki/Ą - Saya tidak dapat menetapkan ketentuan untuk ini. Berikut ini beberapa kode dan penjelasan: pastebin.com/cHxbjVFH , mengapa itu terjadi? Saya menggunakan paket WP yang didedikasikan untuk bahasa ini.
Wordpressor
Apakah Anda berbicara tentang aksen dan umlaut dll? Jika demikian maka itu adalah sesuatu yang pantas untuk pertanyaan baru dalam dirinya sendiri, dan bukan pertanyaan sepele untuk ditanyakan. Kemungkinan itu juga merupakan pertanyaan PHP umum dan Stack Overflow akan menjadi tempat terbaik untuk menanyakannya
Tom J Nowell
4

Jika Anda tidak ingin menggunakan metode istilah Taksonomi pilihan, lakukan ini:

<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>
21zna9
sumber
dapatkah Anda menjelaskan cara kerjanya? bukankah itu mengembalikan pos yang berisi surat itu?
Tintinabulator Zea
tidak akan. mysql menggunakan% sebagai wildcard. namun saya belum pernah menemukan $ dalam permintaan mysql. dengan benar itu harus dibacaWHERE post_title LIKE 'request%'
brett
1

Lihat artikel ini di sini: query_post berdasarkan judul?

Atau Anda dapat membuat pembantu pra-simpan menggunakan kerangka PODS 2 dan menyimpan huruf pertama dari judul tulisan di beberapa bidang dan menggunakan kondisi WHERE sederhana.

Atau buat dropdown (pod lain / tipe konten) dengan semua huruf dan buat hubungan dengan Anda jenis konten tulisan yang ada (di pod 2 itu mungkin) dan hanya itu. Jadi, sebelum menyimpan istilah kamus Anda memilih dari kotak dropdown surat yang ingin Anda tetapkan untuk istilah ini.

Di Pods 2 Anda dapat menambahkan bidang tambahan ke jenis konten posting yang ada. Plugin / kerangka kerja ini adalah sesuatu seperti CCK + Views di dunia Drupal benar-benar luar biasa.

Pods 2 adalah plugin yang sangat membantu.

Derfder
sumber