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.