¿Cómo consultar posts de autores y categorías específicas usando WP_Query?
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í?

¿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 ),
)
)
);

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?

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

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

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.

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.

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>";
