Verilen mesajla başlayan tüm mesajlar gösterilsin mi?


12

Wordpress tabanlı sözlük oluşturmaya çalışıyorum, temelde 26 sayfa (her harf için bir tane) olacak:

ABC ... XYZ

Ve her sayfa belirli bir harfle başlayan tüm yayınları görüntüler, bu nedenle "A" sayfasını açtıktan sonra şöyle bir şey görüntülemelidir:

pupada

abaküs

deniz kulağı

(...) masmavi

İlk başta özel yazı türlerini düşünüyordum, ancak 26 özel yazı türü oluşturmak ve korumak aşırı bir ses gibi geliyor.

Bu tür yayınları sıralamanın en etkili yolu ne olacak? Veritabanı sorgulama, PHP ile döngü bölme? 1000 yazı gönderiyorum (evet, Wordpress olmalı :)).

Yanıtlar:


10

Yazı tiplerini kullanmayın, sınıflandırma terimlerini kullanın!

Kaydetme işleminde, yazı başlığının ilk harfini kullanarak AZ terimleriyle nesne terimlerini ayarlayın. Tutarlılık için büyük veya küçük harfleri zorladığınızdan emin olun. Alfabenin her harfi için terimler, sayılar ve alfasayısal olmayan diğer simgeler için bir terim oluşturduğunuzdan emin olun.

Bu, her gönderi başlığının ilk harfini sorgulamaktan daha hızlı olmalıdır ve size etiket bulutları veya terim listesi widget'ları gibi daha fazla şey yapabileceğiniz bir sınıflandırma sağlar! Ayrıca, veritabanını manuel olarak saymaya zorlamadan hangi harflerin ilişkili ve kaç harfle ilişkili olduğunu belirlemenin çok daha hızlı bir yoludur ve sesli harflerle başlayan gönderiler gibi daha karmaşık sorgular yapmak için standart WordPress terim API'larını kutudan çıkarabilirsiniz.


Bu kesinlikle izlenmesi gereken ideal yoldur. Ancak, binlerce gönderiyi unutmayın; Bu oldukça hantal bir görev olabilir. Başlangıçta alfabenin her harfiyle başlayan tüm mesajları sorgulamanız ve her bir gönderiyi alfabenin ilgili harfiyle eşleşecek şekilde uygun sınıflandırma terimiyle güncellemeniz gerekir. Aksi takdirde, her bir gönderiyi manuel olarak güncellemek yüzlerce yıl alır .
Michael Ecklund

Evet, bu çok büyük bir dezavantaj, bu gönderiler TAMAMEN cahil insanlar tarafından eklenecek ve yeni yazı oluştururken doğru taksonomiyi ayarlama konusunda onlara güvenemiyorum. Tüm yayınları sorgulayıp birisinin her şeyi düzenlediği / oluşturduğu her seferinde güncel olup olmadığından emin değilim?
Wordpressor

3
Hayır, bu hiç bir sorun olmaz, kullanıcı arayüzünü gizler ve işlemi otomatik hale getirir. Posta kancalarında kaydet ve güncelle, manuel olarak yapmak saçma bir şekilde pahalı olurdu
Tom J Nowell

Tom J Nowell, bir cazibe gibi çalışıyor, ancak ciddi bir sorunum var ve bunu nasıl yöneteceğimden emin değilim - bazı kelimeler en.wikipedia.org/wiki/Ą gibi harflerle başlayacak - Ben bunlar için terimler ayarlanamıyor. İşte bazı kod ve açıklamalar: pastebin.com/cHxbjVFH , bu neden oluyor? Bu dile adanmış WP paketi kullanıyorum.
Wordpressor

Aksanlar ve umlautlar vb. hakkında mı konuşuyorsunuz? Eğer öyleyse, bu kendi başına yepyeni bir soruyu hak eden bir şeydir ve sorulması önemsiz bir soru değildir. Muhtemelen aynı zamanda genel bir PHP sorusudur ve bu yüzden Stack Overflow bunu sormak için en iyi yer olacaktır
Tom J Nowell

4

Tercih edilen Taksonomi terimleri yöntemiyle gitmek istemiyorsanız, bunu yapın:

<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>

bunun nasıl çalıştığını açıklayabilir misiniz? mektubu içeren herhangi bir gönderiyi döndürmez mi?
Tentenabulator Zea

olmaz. mysql% karakterini joker karakter olarak kullanır. Ancak ben mysql sorgularda $ karşılaşmadım. doğru okumalıWHERE post_title LIKE 'request%'
brett

1

Bu makaleyi buradan kontrol edin: query_post başlığına göre mi?

Veya PODS 2 çerçevesini kullanarak ön kayıt yardımcısı oluşturabilir ve yazı başlığının ilk harfini bir alana kaydedebilir ve basit WHERE koşulunu kullanabilirsiniz.

Veya tüm harfleri içeren bir açılır menü (başka bir kapsül / içerik türü) oluşturun ve mevcut yayın içerik türünüzle (bölmeler 2'de mümkündür) ilişki oluşturun ve hepsi bu kadar. Dolayısıyla, sözlük terimini kaydetmeden önce, bu terime atamak istediğiniz harfi açılan kutudan seçebilirsiniz.

Bölmeler 2'de varolan bir gönderi içerik türüne fazladan alan ekleyebilirsiniz. Drupal dünyasında CCK + Views gibi bir şey olan bu eklenti / çerçeve gerçekten harika.

Pod 2 çok yararlı bir eklentidir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.