Как вы запрашиваете сообщения от более чем одного автора в Wordpress? - PullRequest
2 голосов
/ 13 мая 2010

Как вы запрашиваете сообщения от более чем одного автора в Wordpress?

что-то вроде: query_posts('author=9,10&post_status=publish&orderby=date')

Это не работает, хотя.

Ответы [ 4 ]

2 голосов
/ 29 октября 2010

Я думаю, что это правильный способ сделать это:

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');
2 голосов
/ 13 мая 2010

Согласно этой документации официальная поддержка отсутствует: http://codex.wordpress.org/Function_Reference/query_posts - под заголовком «Параметры автора».

Однако копание в исходном коде показывает иначе: 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 .= ')';

Чтобы проверить, правильно ли используется ваш список, разделенный запятыми, я бы пошел дальше и начал бросать строки отладки в функцию WP_Query::get_posts(). Например, каково окончательное значение $whichauthor?

0 голосов
/ 15 мая 2010

Этот немного другой цикл будет работать несколько раз на странице или в сообщении с другими параметрами запроса:

<?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; ?>
0 голосов
/ 13 мая 2010

Функция query_posts () предназначалась только для поддержки запросов одного автора за раз. Если вы хотите отобразить несколько авторов, я предлагаю попробовать одно из следующих:

  1. Создайте свой собственный запрос, чтобы включить несколько идентификаторов авторов. Вы можете использовать $ wpdb-> query () для запуска практически любого оператора SQL в базе данных, так что вы определенно можете получить список всех сообщений от нескольких авторов, это просто займет больше времени.
  2. Второй вариант - сгруппировать сообщения по автору и запустить отдельный цикл WordPress для каждого идентификатора автора. Это несколько разбивает ваш контент, но вы можете предварять каждый раздел краткой биографией автора. Пример кода на этом сайте .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...