Non funzionante? WP_Query e "attachment" come tipo di post

20 apr 2011, 01:37:56
Visualizzazioni: 26.7K
Voti: 24

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

Mi chiedo quale sia la differenza tra l'impostazione di post_status su 'null' e 'inherit'

Wok Wok
20 apr 2011 20:29:53

Mi hai appena risparmiato un sacco di problemi con 'post_status' => 'inherit' Grazie!

Pat Pat
3 mag 2011 19:19:28
Tutte le risposte alla domanda 4
2
22

Aggiungi in $args, è importante.

'post_status' => 'any'

Non fare: 'post_status' => null

Questo è importante perché gli allegati non hanno uno post_status, quindi il valore predefinito per post_status, published, non troverà alcun allegato.

19 set 2013 07:10:08
Commenti

Sì, come mai funziona? Non riuscivo a far apparire il mio allegato nella pagina dell'archivio finché non ho aggiunto questo.

Claire Claire
26 apr 2015 11:56:01

Lascio solo un commento come promemoria per me stesso che, ancora una volta, ho trovato questa risposta su SO perché me ne sono dimenticato, di nuovo. :facepalm:

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

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

20 apr 2011 03:57:06
0

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.

20 apr 2011 02:13:15
2

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.

20 apr 2011 03:16:38
Commenti

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 User
21 apr 2011 01:31:23

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 Chad Von Lind
21 apr 2011 01:45:37