¿Roto? WP_Query y "archivo adjunto" como un tipo de publicación

18

Tengo una galería adjunta a una página. En esa página, estoy ejecutando la siguiente consulta:

$events_gallery = new WP_Query( // Start a new query for our videos
array(
    'post_parent' => $post->ID, // Get data from the current post
    'post_type' => 'attachment', // Only bring back attachments
    'post_mime_type' => 'image', // Only bring back attachments that are images
    'posts_per_page' => '3', // Show us the first three results
    'status' => 'inherit', // Inherit the status of the parent post 
    'orderby' => 'rand', // Order the attachments randomly  
    )
);

He experimentado bastantes maneras y, por alguna razón, no puedo recuperar los archivos adjuntos. ¿Me estoy perdiendo algo obvio aquí?

Actualizar*

Gracias a Wok por señalarme en la dirección correcta.

Resulta que estaba usando "estado" en lugar de "post_status". El códice había usado "estado" como ejemplo en su explicación en contexto del tipo de publicación "adjunto". En su lugar, actualicé el códice para hacer referencia a "post_status". El código correcto es el siguiente:

$events_gallery = new WP_Query( // Start a new query for our videos
array(
    'post_parent' => $post->ID, // Get data from the current post
    'post_type' => 'attachment', // Only bring back attachments
    'post_mime_type' => 'image', // Only bring back attachments that are images
    'posts_per_page' => '3', // Show us the first three results
    'post_status' => 'inherit', // Attachments default to "inherit", rather than published. Use "inherit" or "any".
    'orderby' => 'rand', // Order the attachments randomly  
    )
);  
Jonathan Wold
fuente
Me pregunto cuál es la diferencia entre post_status establecido en 'nulo' vs 'heredar' '
Wok
¡Me acabas de salvar mucho dolor con 'post_status' => 'inherit' Gracias!
Pat

Respuestas:

14

Estos son los parámetros de consulta que uso ... funciona para mí 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'                  
            );
Wok
fuente
13

Agregar $args, es importante.

'post_status' => 'any'

No haga: 'post_status' => null

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

Pham
fuente
Haga un esfuerzo para explicar la respuesta, en lugar de simplemente publicar una o dos líneas de código.
s_ha_dum
Sí, ¿cómo es que esto funciona? No pude ver mi archivo adjunto en mi página de archivo hasta que agregué esto.
Claire
0

Al observar la consulta que genera, parece ser un error. 'status' => 'heredar' se interpreta como el estado del padre, cuando la entrada en la base de datos para el archivo adjunto es literalmente 'heredar'.

Una alternativa es usar get_children en lugar de WP_Query.

Milo
fuente
0

He podido mostrar todas las imágenes que son archivos adjuntos a una publicación 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 hacer eco de la URL de la imagen original a tamaño completo, puede vincular esa imagen a

<?php echo wp_get_attachment_url( $attachment->ID , false ); ?>

Esperemos que este sea un enfoque de lo que estás tratando de hacer.

Chad Von Lind
fuente
¿La paginación funciona con eso? ¿Y puedes mostrar el resto de tu código de salida? Estoy en medio de volver a codificar una galería de temas para realmente paginar los archivos adjuntos que están en la página. ¡Gracias!
Si subo 4 imágenes a una publicación, y agrego esto a la entrada de contenido principal div en single.php, solo escupirá 4 etiquetas de imagen. El src = de cada uno conducirá al tamaño de imagen grande original. La paginación no funciona con esto, ya que escupe todas y cada una de las imágenes adjuntas a la publicación.
Chad Von Lind