Как запрашивать записи от определенных авторов и категорий используя WP_query?

12 февр. 2014 г., 16:12:13
Просмотры: 33K
Голосов: 2

В настоящее время у меня есть WP_query, где я получаю записи от определенного набора авторов. К этому я хочу добавить также определенные категории.

$args = array( 'author__in' => $authors, 'posts_per_page' => 12, 'paged' => $paged );

$authors - это массив, содержащий ID пользователей.

Итак, мне нужно запрашивать записи как от авторов, так и из категорий.

Я думал использовать что-то вроде этого:

'tax_query' => array(
    'relation' => 'OR',
    array(
        'taxonomy' => 'category',
        'field' => 'id',
        'terms' => array ( $cat_ids ),
    ),
    array(
        'taxonomy', => 'user',
        'field' => 'id',
        'terms' => array( $user_ids ),
    )
)

Я знаю, что user не является таксономией; однако, я ищу что-то подобное, что работает.

РЕДАКТИРОВАНИЕ

Что ж, я попробовал это, и пока что работает:

$args = array(
  'author__in'     => $authors,
  'category__in'   => $terms,
  'posts_per_page' => 12,
  'paged'          => $paged
);

Есть ли способ лучше?

РЕДАКТИРОВАНИЕ 2

Мое предыдущее редактирование не работает так, как я хотел. Проблема в том, что когда указаны только категории, записи не отображаются. Мне нужно отношение OR.

РЕДАКТИРОВАНИЕ 3

Я не смог найти решение. Когда я использую author__in и category__in для аргументов, wordpress показывает записи только от авторов, а не обоих. Мне нужно показывать записи как от авторов, ТАК И из категорий. Что я делаю неправильно?

5
Комментарии

author__in — это способ сделать это, но похоже, что вы с этого начинали.

s_ha_dum s_ha_dum
12 февр. 2014 г. 16:28:03

да, но теперь я также хочу получать записи из определенных категорий в том же запросе.

Gixty Gixty
12 февр. 2014 г. 16:35:13

У WP_Query очень ограниченные возможности поиска по пользователям. Извините. Не совсем понятно, что вы хотите. Ваш вопрос можно интерпретировать несколькими способами. Пожалуйста, очень внимательно перечислите ваши условия.

s_ha_dum s_ha_dum
12 февр. 2014 г. 16:46:20

Хорошо, давайте попробую прояснить. Я хочу выполнить запрос постов, основываясь на категориях и ID авторов в одном запросе.

Gixty Gixty
12 февр. 2014 г. 16:48:07

Привет, ты работаешь с типом записи "post" и таксономией "category"?

Aamer Shahzad Aamer Shahzad
22 нояб. 2016 г. 04:35:58
Все ответы на вопрос 3
5

Это то, что вы ищете?

$query = new wp_query($arr);
    $arr = array(
        'author__in'=> array(2,4,6), // ID авторов, которых нужно включить
        'posts_per_page' => '12', // Количество записей на страницу
        'paged' => $paged, // Номер текущей страницы
        'tax_query' => array(
        array(
        'taxonomy' => 'category', // Таксономия - категория
        'field' => 'id', // Поле - ID
        'terms' => array ( $cat_ids ), // ID категорий
        )
    )
    );
12 февр. 2014 г. 16:43:54
Комментарии

Да, я искал что-то подобное. Я не был уверен, можно ли оставить author__in, я все еще учусь и хочу делать все правильно. Мой вариант EDIT тоже работает, так что вы бы что посоветовали использовать?

Gixty Gixty
12 февр. 2014 г. 16:46:17

Ваш вариант EDIT кажется мне хорошим, если он выполняет поставленную задачу.

Sudeep K Rana Sudeep K Rana
12 февр. 2014 г. 16:48:32

Что произойдет, если авторов нет? Будут ли посты из указанных категорий все равно отображаться?

Gixty Gixty
12 февр. 2014 г. 16:50:48

Ну, в таком случае посты не будут отображаться. Полагаю, WP_Query выполняет логическое И для запросов, и если какой-то параметр отсутствует, в результате ничего не вернется.

Что можно сделать — настроить два запроса, так что если первый запрос завершится неудачей (вернет null), второй (без параметра автора) возьмет на себя обработку.

Sudeep K Rana Sudeep K Rana
12 февр. 2014 г. 16:56:50

Я не нашел решения для этой проблемы. Где еще я могу искать помощь? Когда я использую author__in и category__in внутри аргументов, отображаются только посты авторов, а не категорий.

Gixty Gixty
20 февр. 2014 г. 22:44:16
0

Вы можете попробовать что-то вроде этого... get_posts_by_author_sql

Альтернативно, если вы хотите выбрать записи на основе авторов/категорий, вы можете использовать wpdb. Возможно, вам удастся применить "JOIN" в SQL-запросе для получения нужных ID записей.

19 сент. 2016 г. 00:48:27
0

можете попробовать это в админке:

wp-admin/edit.php?author=2 //указан автор
wp-admin/edit.php?cat=16,25&author=2 //включая категории

этот тест не отображается так, как вы описываете, поэтому проверьте правильность значений

$terms = array(16,25);
//$author = array(2);
$args = array(
    'author__in'  => isset($author) ? $author : 0,
    'category__in' => isset($terms) ? $terms : ''
    );
$demos = new WP_Query($args);
echo "<pre>";
print_r($demos);
echo "</pre>";
22 нояб. 2016 г. 03:32:36