¿Roto? WP_Query y "attachment" como tipo de post

20 abr 2011, 01:37:56
Vistas: 26.7K
Votos: 24

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
    )
);
2
Comentarios

Me pregunto cuál es la diferencia entre establecer post_status como 'null' versus 'inherit'

Wok Wok
20 abr 2011 20:29:53

Acabas de ahorrarme mucho dolor con 'post_status' => 'inherit' ¡Gracias!

Pat Pat
3 may 2011 19:19:28
Todas las respuestas a la pregunta 4
2
22

Añade en $args, es importante.

'post_status' => 'any'

No hagas: 'post_status' => null

Esto es importante porque los archivos adjuntos no tienen un post_status, por lo que el valor predeterminado para post_status, published, no encontrará ningún adjunto.

19 sept 2013 07:10:08
Comentarios

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.

Claire Claire
26 abr 2015 11:56:01

Solo dejo un comentario como recordatorio para mí mismo de que, una vez más, he encontrado esta respuesta en SO porque lo olvidé, otra vez. :facepalm:

dossy dossy
31 mar 2025 02:31:00
0
19

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

20 abr 2011 03:57:06
0

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.

20 abr 2011 02:13:15
2

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.

20 abr 2011 03:16:38
Comentarios

¿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!

User User
21 abr 2011 01:31:23

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.

Chad Von Lind Chad Von Lind
21 abr 2011 01:45:37