Afficher tous les articles commençant par lettre donnée?

11

J'essaie de créer un dictionnaire basé sur Wordpress. Il comportera 26 pages (une par lettre):

  

A B C ... X Y Z

Et chaque page affichera tous les messages commençant par une lettre donnée. Ainsi, après avoir ouvert la page "A", il devrait afficher quelque chose comme:

  

étouffer

     

abaque

     

ormeau

     

(...)       azur

Je pensais tout d'abord aux types d'articles personnalisés, mais créer et gérer 26 types d'articles ressemblant à une surcharge.

Quel sera le moyen le plus efficace de trier les articles de cette manière? Requête de base de données, boucle de fractionnement avec PHP? Je vise des milliers de messages (oui, il faut que ce soit Wordpress:)).

    
posée Wordpressor 05.10.2012 - 17:54

3 réponses

8

N'utilisez pas de type d'article, utilisez des termes de taxonomie!

Lors de la sauvegarde, définissez les termes de l'objet dans une taxonomie AZ en utilisant la première lettre du titre de l'article. Assurez-vous de forcer la majuscule ou la minuscule pour plus de cohérence. Assurez-vous de créer des termes pour chaque lettre de l'alphabet et un terme pour les nombres et autres symboles non alphanumériques.

Cela devrait être plus rapide que d'interroger la première lettre de chaque titre d'article, et cela vous donne une taxonomie avec laquelle vous pouvez faire plus de choses, comme des nuages de balises ou des widgets listeur de termes! C'est également un moyen beaucoup plus rapide de déterminer quelles lettres ont des publications associées et combien, sans forcer la base de données à compter manuellement, et vous pouvez utiliser des API de terme WordPress standard prêtes à l'emploi pour effectuer des requêtes plus complexes, telles que les publications commençant par des voyelles

    
réponse donnée Tom J Nowell 05.10.2012 - 18:02
4

Si vous ne souhaitez pas utiliser la méthode des termes de taxonomie préférée, procédez comme suit:

<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>
    
réponse donnée 21zna9 09.10.2012 - 20:26
1

Consultez cet article ici: query_post par titre?

Vous pouvez également créer une application d'aide à la sauvegarde en utilisant le framework PODS 2 et enregistrez la première lettre du titre de l'article dans un champ et en utilisant le simple WHERE condition.

Ou créez un menu déroulant (un autre pod / type de contenu) avec toutes les lettres et créez une relation avec votre type de contenu existant (dans les pods 2, c'est possible) et c'est tout. Par conséquent, avant d’enregistrer le terme du dictionnaire, sélectionnez dans la liste déroulante la lettre que vous souhaitez lui attribuer.

Dans les pods 2, vous pouvez ajouter le champ supplémentaire à un type de contenu de publications existant. Ce plugin / framework qui ressemble à CCK + Views dans le monde Drupal est vraiment génial.

Pods 2 est un plugin très utile.

    
réponse donnée Derfder 05.10.2012 - 18:06

Lire d'autres questions sur les étiquettes