2010-02-11 6 views
2
<?php $temp_query = $wp_query; ?> 
<?php query_posts('tag=sometag,anothertag&posts_per_page=10'); ?> 

<?php while (have_posts()) : the_post(); ?> 
    // print post here 
<?php endwhile; ?> 

<?php $wp_query = $temp_query; ?> 

En utilisant cette simple boucle wordpress, comment est-ce que je montre SEULEMENT les messages (en fait les titres de poste) en commençant par dire la lettre «G». Je veux trier les messages par ordre alphabétique, mais seulement ceux qui correspondent, pas tous.Fetch posts en commençant par l'alphabet [x]

Merci!

Répondre

5

Je voudrais définir une action pour la requête. Dans vos thèmes functions.php fichier:

add_action('posts_where', 'startswithaction'); 
function startswithaction($sql){ 
    global $wpdb; 
    $startswith = get_query_var('startswith'); 

    if($startswith){ 
     $sql .= $wpdb->prepare(" AND $wpdb->posts.post_title LIKE %s ", $startswith.'%'); 
    } 

    return $sql; 
} 

Ensuite, vous pouvez interroger les messages comme ceci:

query_posts('startswith=G&posts_per_page=10'); 
+3

Vous venez m'a appris quelque chose de très précieux, je vous remercie. Je n'avais aucune idée jusqu'à il y a 5 secondes que l'action 'posts_where' existait. : D – Sandwich

+0

MERCI BEAUCOUP! Cela a fonctionné comme un charme! :) – 3zzy

+0

Ceci est une très bonne solution, mais personnellement, je n'aime pas utiliser SQL brut n'importe où. Il est étrange que les paramètres de base de la requête n'ont pas quelque chose comme les méta-requêtes sur les messages concernant 'LIKE', 'NOT LIKE, ect. http://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters – Foxinni

3

Vérifiez le titre du poste dans la boucle:

while (have_posts()) : the_post(); 
    // jump to the next post if this one doesn't start with the letter you want 
    if($post->post_title[0] != $letter) continue 

    // do what you want with the post 
endwhile; 
0

fou pensé, mais pourquoi ne pas vous suffit d'ajouter la lettre comme une marque au poste. En d'autres termes, si vous vouliez que votre message "Les Beaux Arbres" apparaisse sous "B" (notez que j'ai dit B et non T), appliquez simplement la balise "B". Ensuite, dans votre section de tag de messages de recherche, assurez-vous d'ajouter votre lettre de choix!

Questions connexes