2010-05-13 4 views

Répondre

0

La fonction query_posts() était uniquement destinée à prendre en charge l'interrogation d'un auteur à la fois. Si vous souhaitez afficher plusieurs auteurs, je suggère d'essayer l'une des méthodes suivantes:

  1. Créez votre propre requête personnalisée pour inclure plusieurs ID d'auteur. Vous pouvez utiliser $ wpdb-> query() pour exécuter à peu près n'importe quelle instruction SQL sur la base de données, de sorte que vous pouvez certainement obtenir une liste de tous les messages de plusieurs auteurs, cela prend juste plus de travail.
  2. La deuxième option consiste à regrouper vos publications par auteur et à exécuter une boucle WordPress distincte pour chaque ID auteur. Cela casse un peu votre contenu, mais vous pouvez préface chaque section avec une courte biographie de l'auteur. Il y a un exemple de code sur this site.
+0

Merci, cette travaillé parfait pour mes besoins. Solution simple # 2. – matchbranding

+0

gratter ça, ça n'a pas vraiment marché. La page se bloque maintenant. – matchbranding

+0

Pouvez-vous poster un extrait de code? Il n'y a aucune raison pour qu'une solution à plusieurs boucles bloque la page. – EAMann

2

Selon cette documentation, il n'y a pas de support officiel: http://codex.wordpress.org/Function_Reference/query_posts - sous la rubrique "Paramètres de l'auteur".

Toutefois, creuser dans le code source révèle le contraire: http://wordpress.taragana.net/nav.html?wp-includes/classes.php.html#query_posts.

$author_array = preg_split('/[,\s]+/', $q['author']); 
for ($i = 1; $i < (count($author_array)); $i = $i + 1) { 
    $whichauthor .= ' '.$andor.' post_author '.$eq.' '.intval($author_array[$i]); 
} 
$whichauthor .= ')'; 

Pour voir si votre liste séparée par des virgules est utilisé correctement, j'aller de l'avant et commencer à lancer des lignes de débogage dans la fonction WP_Query::get_posts(). Par exemple, quelle est la valeur finale de $whichauthor?

+0

ok, erreur bien bête. Je pensais avoir choisi ce modèle de page mais je ne l'ai pas fait. Les query_posts d'origine ('author = 9,10 & post_status = publish & orderby = date') ont bien fonctionné pour l'enregistrement. – matchbranding

0

Cette boucle légèrement différente fonctionnera mutliple fois sur une page ou poster avec des paramètres de requête différents:

<?php $my_query = new WP_Query('author=9&post_status=publish&orderby=date'); ?> 
<?php while ($my_query->have_posts()) : $my_query->the_post(); ?> 
<a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"> 
<?php the_title(); ?></a> 
<?php endwhile; ?> 
2

Je pense que c'est la bonne façon de le faire:

function yclads_posts_where_followed_authors($where) { 
    global $wpdb; 
    $authors_ids = array(0,1,2,3);//array of authors IDs 

    if (count($authors_ids) > 0) 
    { 
     $where .= ' AND ' . $wpdb->posts . '.post_author IN(' . implode (',',$authors_ids) . ') '; 
    } 
    else 
    { 
     $where .= ' AND 1=2'; //do not return results 
    } 
    return $where; 
} 

add_filter('posts_where', 'posts_where_filter_authors'); 
Questions connexes