¿Cómo consultar posts de autores y categorías específicas usando WP_Query?

12 feb 2014, 16:12:13
Vistas: 33K
Votos: 2

Actualmente tengo una WP_Query donde estoy obteniendo posts de un conjunto específico de autores. A esto, quiero añadir categorías específicas también.

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

$authors es un array que contiene los IDs de los usuarios.

Entonces, necesito consultar posts tanto de autores como de categorías.

Estaba pensando en usar algo como esto:

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

Sé que user no es una taxonomía; sin embargo, estoy buscando algo similar que funcione.

EDICIÓN

Bueno, probé esto y está funcionando hasta ahora:

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

¿Hay una mejor manera?

EDICIÓN 2

Mi edición anterior no está funcionando como yo quería. El problema es que cuando solo se especifican categorías, no se muestran posts. Necesito una relación OR.

EDICIÓN 3

No he podido encontrar una solución. Cuando uso author__in y category__in para los argumentos, WordPress solo muestra posts de autores y no de ambos. Necesito mostrar posts de autores Y categorías. ¿Qué estoy haciendo mal aquí?

5
Comentarios

author__in es la forma de hacerlo, pero eso parece lo que ya tenías.

s_ha_dum s_ha_dum
12 feb 2014 16:28:03

sí, pero ahora también quiero obtener las publicaciones de categorías específicas en la misma consulta.

Gixty Gixty
12 feb 2014 16:35:13

La capacidad de búsqueda de usuarios en WP_Query es muy limitada. Lo siento. No está claro lo que quieres. Hay múltiples formas de interpretar tu pregunta. Por favor, enumera tus condiciones con mucho cuidado.

s_ha_dum s_ha_dum
12 feb 2014 16:46:20

ok, déjame intentar aclararlo. Quiero consultar publicaciones basadas en categorías e IDs de autores en la misma consulta.

Gixty Gixty
12 feb 2014 16:48:07

hola, ¿estás trabajando con el tipo de publicación "post"? y la taxonomía "category"?

Aamer Shahzad Aamer Shahzad
22 nov 2016 04:35:58
Todas las respuestas a la pregunta 3
5

¿Es esto lo que estás buscando?

$query = new wp_query($arr);
    $arr = array(
        'author__in'=> array(2,4,6), //IDs de autores que deseas incluir
        'posts_per_page' => '12',
        'paged' => $paged,
        'tax_query' => array(
        array(
        'taxonomy' => 'category',
        'field' => 'id',
        'terms' => array ( $cat_ids ),
        )
    )
    );
12 feb 2014 16:43:54
Comentarios

Sí, estaba buscando algo así. No estaba seguro de si podía mantener author__in, todavía estoy aprendiendo y quiero hacer las cosas correctamente. Mi EDIT también está funcionando, ¿qué me recomendarías usar?

Gixty Gixty
12 feb 2014 16:46:17

Tu edición me parece bien, siempre y cuando cumpla con el propósito.

Sudeep K Rana Sudeep K Rana
12 feb 2014 16:48:32

¿Qué pasa si no hay autores? ¿Aún se mostrarán las publicaciones de las categorías especificadas?

Gixty Gixty
12 feb 2014 16:50:48

Bueno, en ese caso las publicaciones no aparecerán. Supongo que WP_Query hace un AND lógico con las consultas y si algún parámetro no está allí, terminará sin resultados.

Lo que puedes hacer es configurar 2 consultas, cuando una consulta falla (devuelve nulo) la otra (sin el parámetro de autor) toma el control.

Sudeep K Rana Sudeep K Rana
12 feb 2014 16:56:50

No he encontrado una solución para esto. ¿Dónde más puedo buscar ayuda? Cuando uso author__in y category__in dentro de los argumentos, solo muestra publicaciones de autores, no de categorías.

Gixty Gixty
20 feb 2014 22:44:16
0

Podrías intentar algo como esto... get_posts_by_author_sql

Alternativamente, si deseas seleccionar publicaciones basadas en autores/categorías podrías usar wpdb. Podrías utilizar un "JOIN" en el SQL para obtener los IDs de publicaciones que necesitas.

19 sept 2016 00:48:27
0

quizás puedas probar esto en el backend:

wp-admin/edit.php?author=2 //el autor está especificado
wp-admin/edit.php?cat=16,25&author=2 //incluir categorías

esta prueba no aparece como describes, así que verifica si el valor es correcto

$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 nov 2016 03:32:36