Visualizza tutti i post che iniziano con una data lettera?


12

Sto cercando di costruire un dizionario basato su Wordpress, fondamentalmente avrà 26 pagine (una per ogni lettera):

ABC ... XYZ

E ogni pagina mostrerà tutti i post che iniziano con una data lettera, quindi dopo aver aperto la pagina "A" dovrebbe mostrare qualcosa come:

dietro

abaco

orecchia di mare

(...) azzurro

All'inizio pensavo ai tipi di post personalizzati, ma la creazione e la manutenzione di 26 tipi di post personalizzati sembra eccessiva.

Quale sarà il modo più efficiente di ordinare messaggi del genere? Query database, loop di divisione con PHP? Sto mirando a migliaia di post (sì, deve essere Wordpress :)).

Risposte:


10

Non usare i tipi di post, usa i termini della tassonomia!

Al momento del salvataggio, imposta i termini dell'oggetto in una tassonomia AZ, usando la prima lettera del titolo del post. Assicurati di forzare maiuscole o minuscole per coerenza. Assicurati di creare termini per ogni lettera dell'alfabeto e un termine per numeri e altri simboli non alfanumerici.

Dovrebbe essere più veloce che interrogare la prima lettera di ogni titolo di post, e ti dà una tassonomia con cui puoi fare più cose, come tag cloud o widget lister di termini! È anche un modo molto più veloce per determinare quali lettere hanno post associati e quante, senza forzare il conteggio manuale del database, e puoi usare API di termini WordPress standard per eseguire query più complesse, come post che iniziano con vocali


Questo è sicuramente il percorso ideale da prendere. Tuttavia, tieni presente, con migliaia di post; Questo potrebbe essere un compito piuttosto ingombrante. Dovresti inizialmente interrogare tutti i post che iniziano con ogni lettera dell'alfabeto e aggiornare ogni post con il termine tassonomia appropriato, abbinando la rispettiva lettera dell'alfabeto. Altrimenti, l'aggiornamento manuale di ogni singolo post richiederebbe secoli per essere completato.
Michael Ecklund,

Sì, questo è un enorme svantaggio, questi post saranno aggiunti da persone TOTALMENTE ignoranti e non posso contare su di loro quando si tratta di impostare la giusta tassonomia durante la creazione di nuovi post. Non sono sicuro se interrogare tutti i post e aggiornarli ogni volta che qualcuno modifica / crea qualcosa sarà efficace?
Wordpressor

3
No, questo non sarebbe affatto un problema, nascondere l'interfaccia utente e automatizzare il processo. Farlo sul salvataggio e aggiornare gli hook post, farlo manualmente sarebbe assurdamente costoso
Tom J Nowell

Tom J Nowell, funziona come un fascino, ma ho un problema serio e non sono sicuro di come gestirlo - alcune delle parole inizieranno con lettere come en.wikipedia.org/wiki/Ą - Sono incapace di fissare termini per questi. Ecco un po 'di codice e spiegazione: pastebin.com/cHxbjVFH , perché sta succedendo? Sto usando il pacchetto WP dedicato per questa lingua.
Wordpressor

stai parlando di accenti e di umlaut ecc ecc? Se è così, allora è qualcosa che merita una domanda completamente nuova e non è una domanda banale da porre. È probabile che sia anche una domanda PHP generale e quindi Stack Overflow sarebbe il posto migliore per porlo
Tom J Nowell

4

Se non si desidera utilizzare il metodo dei termini di tassonomia preferito, procedere come segue:

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

puoi spiegare come funziona? non restituirebbe alcun post che contiene la lettera?
Tintinabulator Zea,

non lo farebbe. mysql utilizza% come carattere jolly. tuttavia non ho mai incontrato $ nelle query mysql. correttamente dovrebbe leggereWHERE post_title LIKE 'request%'
brett

1

Controlla questo articolo qui: query_post per titolo?

Oppure puoi creare un aiuto pre-salvataggio usando il framework PODS 2 e salvare la prima lettera del titolo del post in qualche campo e usare la semplice condizione WHERE.

Oppure crea un menu a discesa (un altro pod / tipo di contenuto) con tutte le lettere e crea una relazione con il tuo tipo di contenuto dei post esistenti (nei pod 2 è possibile) e basta. Quindi, prima di salvare il termine del dizionario, selezionare dalla casella a discesa la lettera che si desidera assegnare a questo termine.

In Pods 2 puoi aggiungere il campo extra a un tipo di contenuto di post esistente. Questo plug-in / framework simile a CCK + Views nel mondo Drupal è davvero fantastico.

Pods 2 è un plugin molto utile.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.