Rotto? WP_Query e "allegato" come tipo di post


18

Ho una galleria allegata a una pagina. In quella pagina, sto eseguendo la seguente query:

$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  
    )
);

Ho sperimentato diversi modi e, per qualche motivo, non riesco a recuperare gli allegati. Mi sto perdendo qualcosa di ovvio qui?

Aggiornare*

Grazie a Wok per avermi indicato nella giusta direzione.

Si scopre che stavo usando "status" anziché "post_status". Il codice aveva usato "status" come esempio nella sua spiegazione contestuale del tipo di post "allegato". Ho invece aggiornato il codice per fare riferimento a "post_status". Il codice corretto è il seguente:

$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  
    )
);  

Mi chiedo quale sia la differenza tra post_status impostato su 'null' vs 'inherit' '
— Wok,

Mi hai appena risparmiato un sacco di dolore con 'post_status' => 'inherit' Grazie!
— Pat

Risposte:


14

Questi sono i parametri di query che utilizzo ... funziona per me quando eseguo il ciclo dei risultati

array(
                'post_parent' => $post->ID,
                'post_status' => 'inherit',
                'post_type'=> 'attachment',
                'post_mime_type' => 'image/jpeg,image/gif,image/jpg,image/png'                  
            );

13

Aggiungi $args, è importante.

'post_status' => 'any'

Non: 'post_status' => null

Questo è importante perché gli allegati non hanno una post_status, in modo che il valore predefinito per post_status, published, troveranno nessun allegato.


Si prega di fare uno sforzo per spiegare la risposta, piuttosto che pubblicare solo una riga o due di codice.
— s_ha_dum,

Sì, come mai funziona? Non è stato possibile visualizzare l'allegato nella pagina dell'archivio fino a quando non l'ho aggiunto.
— Claire,

0

Guardando la query che genera, sembra essere una specie di bug. 'status' => 'inherit' viene interpretato come lo stato del genitore, quando la voce nel db per l'allegato è letteralmente 'eredita'.

Un'alternativa è usare get_children al posto di WP_Query.


0

Sono stato in grado di visualizzare tutte le immagini che sono allegati a un post usando questo codice.

<?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   }
    } ?>

E per ripetere l'URL dell'immagine originale a dimensione intera, è possibile collegare tale immagine a

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

Spero che questo sia un approccio a ciò che stai cercando di fare.


L'impaginazione funziona con quello? E puoi mostrare il resto del tuo codice di output? Sono nel mezzo di ricodificare una galleria di temi per impaginare effettivamente gli allegati presenti nella pagina. Grazie!

Se carico 4 immagini in un post e lo aggiungo al div principale della voce di contenuto in single.php, sputeranno 4 tag immagine. Lo src = di ciascuno porterà alla dimensione originale dell'immagine di grandi dimensioni. L'impaginazione non funziona con questo, poiché sputa tutte le immagini allegate al post.
— Chad Von Lind,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.