Non funzionante? WP_Query e "attachment" come tipo di post
Ho una galleria allegata a una pagina. Su quella pagina, sto eseguendo la seguente query:
$events_gallery = new WP_Query( // Avvia una nuova query per i nostri video
array(
'post_parent' => $post->ID, // Ottieni dati dal post corrente
'post_type' => 'attachment', // Recupera solo gli allegati
'post_mime_type' => 'image', // Recupera solo gli allegati che sono immagini
'posts_per_page' => '3', // Mostra i primi tre risultati
'status' => 'inherit', // Eredita lo stato del post genitore
'orderby' => 'rand', // Ordina gli allegati in modo casuale
)
);
Ho sperimentato diversi modi e, per qualche motivo, non riesco a ottenere gli allegati. Mi sfugge qualcosa di ovvio?
Aggiornamento*
Grazie a Wok per avermi indirizzato nella giusta direzione.
Si è scoperto che stavo usando "status" invece di "post_status". Il codex aveva utilizzato "status" come esempio nella sua spiegazione contestuale del tipo di post "attachment". Ho aggiornato il codex per fare riferimento a "post_status". Il codice corretto è il seguente:
$events_gallery = new WP_Query( // Avvia una nuova query per i nostri video
array(
'post_parent' => $post->ID, // Ottieni dati dal post corrente
'post_type' => 'attachment', // Recupera solo gli allegati
'post_mime_type' => 'image', // Recupera solo gli allegati che sono immagini
'posts_per_page' => '3', // Mostra i primi tre risultati
'post_status' => 'inherit', // Gli allegati hanno come default "inherit", invece di published. Usa "inherit" o "any".
'orderby' => 'rand', // Ordina gli allegati in modo casuale
)
);
Sì, come mai funziona? Non riuscivo a far apparire il mio allegato nella pagina dell'archivio finché non ho aggiunto questo.
Claire
Questi sono i parametri della query che utilizzo... funzionano per me quando ciclo attraverso i risultati
array(
'post_parent' => $post->ID,
'post_status' => 'inherit',
'post_type'=> 'attachment',
'post_mime_type' => 'image/jpeg,image/gif,image/jpg,image/png'
);
Per maggiori dettagli, consulta la documentazione ufficiale per i parametri di stato di WP_Query
Analizzando la query che genera, sembra effettivamente esserci un bug di qualche tipo. 'status' => 'inherit' viene interpretato come lo stato del genitore, quando invece la voce nel database per l'allegato è letteralmente 'inherit'.
Un'alternativa è utilizzare get_children al posto di WP_Query.
Sono riuscito a visualizzare tutte le immagini allegate a un post utilizzando 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 }
} ?>
Per ottenere l'URL dell'immagine originale a dimensione intera, puoi collegarla a
<?php echo wp_get_attachment_url( $attachment->ID , false ); ?>
Spero che questo approccio sia utile per quello che stai cercando di fare.
La paginazione funziona con questo? E puoi mostrare il resto del tuo codice di output? Sono nel mezzo della ricodifica della galleria di un tema per effettivamente paginare gli allegati presenti nella pagina. Grazie!
User
Se carico 4 immagini in un post, e aggiungo questo nel div principale del contenuto in single.php, genererà semplicemente 4 tag immagine. Il src= di ognuno porterà alla dimensione originale grande dell'immagine.
La paginazione non funziona con questo, poiché genera tutte le immagini allegate al post.
Chad Von Lind