¿Roto? WP_Query y "attachment" como tipo de post
Tengo una galería adjunta a una página. En esa página, estoy ejecutando la siguiente consulta:
$events_gallery = new WP_Query( // Iniciar una nueva consulta para nuestros videos
array(
'post_parent' => $post->ID, // Obtener datos del post actual
'post_type' => 'attachment', // Solo traer archivos adjuntos
'post_mime_type' => 'image', // Solo traer archivos adjuntos que sean imágenes
'posts_per_page' => '3', // Mostrar los primeros tres resultados
'status' => 'inherit', // Heredar el estado del post padre
'orderby' => 'rand', // Ordenar los archivos adjuntos aleatoriamente
)
);
He experimentado de varias formas y, por alguna razón, no puedo hacer que se devuelvan los archivos adjuntos. ¿Me estoy perdiendo algo obvio?
Actualización*
Gracias a Wok por señalarme la dirección correcta.
Resulta que estaba usando "status" en lugar de "post_status". El codex había usado "status" como ejemplo en su explicación contextual del tipo de post "attachment". Actualicé el codex para hacer referencia a "post_status" en su lugar. El código correcto es el siguiente:
$events_gallery = new WP_Query( // Iniciar una nueva consulta para nuestros videos
array(
'post_parent' => $post->ID, // Obtener datos del post actual
'post_type' => 'attachment', // Solo traer archivos adjuntos
'post_mime_type' => 'image', // Solo traer archivos adjuntos que sean imágenes
'posts_per_page' => '3', // Mostrar los primeros tres resultados
'post_status' => 'inherit', // Los archivos adjuntos por defecto son "inherit", en lugar de published. Usar "inherit" o "any".
'orderby' => 'rand', // Ordenar los archivos adjuntos aleatoriamente
)
);
Sí, ¿cómo es que esto funciona? No podía hacer que mi adjunto apareciera en mi página de archivo hasta que agregué esto.

Estos son los parámetros de consulta que uso... me funcionan cuando recorro los resultados
array(
'post_parent' => $post->ID,
'post_status' => 'inherit',
'post_type'=> 'attachment',
'post_mime_type' => 'image/jpeg,image/gif,image/jpg,image/png'
);
Para más detalles, por favor consulta la documentación oficial de los parámetros de estado de WP_Query

Al observar la consulta que genera, parece ser un tipo de error. 'status' => 'inherit' se interpreta como el estado del padre, cuando la entrada en la base de datos para el adjunto es literalmente 'inherit'.
Una alternativa es usar get_children en lugar de WP_Query.

He podido mostrar todas las imágenes que son adjuntos de una entrada usando este código.
<?php
$args = array( 'post_type' => 'attachment', 'orderby' => 'menu_order', 'order' => 'ASC', 'post_mime_type' => 'image' ,'post_status' => null, 'post_parent' => $post->ID );
$attachments = get_posts($args);
if ($attachments) {
foreach ( $attachments as $attachment ) { ?>
<img src="<?php echo wp_get_attachment_url( $attachment->ID , false ); ?>" />
<?php }
} ?>
Y para mostrar la URL de la imagen original en tamaño completo, podrías enlazar esa imagen a
<?php echo wp_get_attachment_url( $attachment->ID , false ); ?>
Espero que este sea un enfoque de lo que estás intentando hacer.

¿Funciona la paginación con eso? ¿Y puedes mostrar el resto de tu código de salida? Estoy en medio de recodificar una galería de temas para que realmente pagine los archivos adjuntos que están en la página. ¡Gracias!

Si subo 4 imágenes a una publicación, y agrego esto dentro del div de entrada de contenido principal en single.php, simplemente mostrará 4 etiquetas de imagen. El src= de cada una llevará al tamaño original grande de la imagen.
La paginación no funciona con esto, ya que muestra todas y cada una de las imágenes adjuntas a la publicación.
