2010-08-23 8 views
0

je le code suivant: http://pastebin.com/ng99augDWordPress Rewind Messages

Il essentiellement recrache cinq postes pour les cinq auteurs que je l'ai spécifié dans les messages de requête dans chaque morceau de code et rembobine les messages avant la prochaine requête. Ceci est loin d'être idéal et voudrait rendre le code plus efficace sans devoir répéter tout le code de modèle pour les publications encore et encore. Je veux aussi qu'ils soient dans un ordre aléatoire au lieu de sortir dans l'ordre où ils ont été écrits car je ne veux pas qu'un auteur particulier soit au sommet. Merci.

+0

Des mises à jour? J'ai regardé en mettant tout le code de boucle dans une fonction et appelez cela après chaque query_posts, mais comment puis-je les faire apparaître aléatoirement sur la page au lieu de dans l'ordre dans lequel je les ai écrits. – Cameron

Répondre

1

Je ne sais pas pourquoi l'utilisation de rewind_posts() est nécessaire. Vous créez une nouvelle requête à l'aide de query_posts() à chaque fois. rewind_posts() rembobine la requête pour la réutiliser.

Si votre performance ne souffre pas, il peut être bon d'exécuter 5 requêtes pour obtenir vos cinq auteurs. Pour éviter de réécrire le même code de modèle chaque fois que vous avez au moins deux options. Créez un fichier php avec le code du modèle en elle, et l'inclure à chaque fois que vous en avez besoin:

<?php include('author_posts.php');?> 

Ou, mieux encore, créer une fonction dans votre functions.php ou dans un fichier de plug-in qui accepte les résultats de la requête et sort le modèle.

<?php $posts = query_posts('posts_per_page=1&author=author1'); 
    if(function_exists('my_authors')){my_authors($posts);} 
?> 

Ensuite, dans votre functions.php ou plugin:

function my_authors($posts){ 
    //template code here, using $posts->ID, $posts->post_content, etc 
} 

La troisième option, qui nettoie votre code et le nombre de requêtes serait d'utiliser une catégorie pour afficher les messages attribués à c'est ici. Vous faites 5 requêtes pour afficher cinq messages. Pour utiliser une requête pour afficher cinq messages et trier au hasard comme vous voulez, éditez chacun des cinq messages et assignez-les à une nouvelle catégorie, disons: 'auteur sampler'. Puis dans votre fichier modèle:

<?php $posts = get_posts('category=author sampler'&order_by=rand&order=asc'); 
    foreach($posts as $post):?> 
     <?php setup_postdata($post); 
      //your posted template code follows: 
     ?> 
     <article id="post-<?php the_ID(); ?>"> 
      <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a><?php edit_post_link('Edit', ' (', ')'); ?></h2> 
      <p class="p-cat">In: <?php the_category('|') ?></p> 
      <p class="p-author"> 
       <span class="name"> 
        <?php the_author_posts_link(); ?></span> <span class="avatar"><?php echo get_avatar($email, $size = '32'); ?> 
       </span> 
      </p> 

      <?php //etc ?> 

     <?php endforeach;?> 
+0

Je ne veux pas utiliser de catégories pour les auteurs. Je suis allé pour l'utilisation d'une fonction pour le code, puis appel juste pour chaque appel query_posts. Le problème consiste à les afficher aléatoirement (l'utilisation de order_by = rand ne fonctionne que pour la requête elle-même et non pour l'ordre de toutes les requêtes sur la page) – Cameron

Questions connexes