Come ottenere tutti gli URL delle immagini allegate a un post?

1 mar 2015, 22:57:25
Visualizzazioni: 14.8K
Voti: 3

Ho cercato ovunque ma non riesco a trovare una soluzione.

Sto cercando di generare un feed XML con tutte le immagini allegate a un post di un custom post type:

</BasicDetails>
<Pictures>
 <Picture>
  <PictureUrl><?php echo wp_get_attachment_url( get_post_thumbnail_id($post->ID)); ?></PictureUrl>
 <Caption></Caption>
 </Picture><Picture>
 <PictureUrl></PictureUrl>
 <Caption></Caption>
</Picture>
</Pictures>

Sto usando wp_get_attachment_url ma restituisce solo un'immagine (ce ne sono più di una per post)

        <?php echo wp_get_attachment_url( get_post_thumbnail_id($post->ID)); ?>

Il tag <Picture> è un elemento ripetuto quindi dovrebbe creare un nuovo nodo per ogni immagine allegata.

Qualsiasi aiuto sarebbe fantastico!

2
Commenti

Quindi vuoi tutte le immagini per un singolo post in un custom post type, oppure tutte le immagini per tutti i post di un custom post type?

Jason Murray Jason Murray
1 mar 2015 22:59:45

Tutti gli URL delle immagini da un post. Il feed sta restituendo tutti i post da un custom post type.

Marco Marco
1 mar 2015 23:15:42
Tutte le risposte alla domanda 2
11

Devi scorrere gli allegati all'interno del tuo ciclo del post, sostituisci la sezione di codice che hai postato con questo (ho messo insieme questo codice da altro codice che ho trovato relativo a un problema simile, ma non ho potuto testarlo):

</BasicDetails>
<?php  $args = array(
            'post_parent'    => $post->ID,
            'post_type'      => 'attachment',
            'numberposts'    => -1, // mostra tutti
            'post_status'    => 'any',
            'post_mime_type' => 'image',
            'orderby'        => 'menu_order',
            'order'          => 'ASC'
       );

$images = get_posts($args);
if($images) { ?>
<Pictures>
  <?php foreach($images as $image) { ?>
   <Picture>
    <PictureUrl><?php echo wp_get_attachment_url($image->ID); ?></PictureUrl>
     <Caption><?php echo $image->post_excerpt; ?></Caption>
  </Picture>
  <?php } ?>
</Pictures>
<?php } ?>
<Agent>

MODIFICA - Aggiornato in base alle modifiche richieste.

1 mar 2015 23:42:40
Commenti

Lo proverò ora, l'ultimo tag è aperto? e il } è necessario?

Marco Marco
1 mar 2015 23:48:05

@Marco assumendo che qualche tipo di codice php segua immediatamente questo pezzo di codice, l'ultimo tag dovrebbe essere aperto sì, se stai echoando altri tag puoi semplicemente mettere un ?> alla fine. Quindi sarà come postato <?php } oppure <?php } ?>

Jason Murray Jason Murray
1 mar 2015 23:51:32

Capisco, anche se ho aggiunto l'istruzione if( sopra in function.php e ha fatto crashare il mio sito. Avrei dovuto menzionare che stavo usando un tema commerciale che è molto personalizzato.

Marco Marco
2 mar 2015 00:00:32

@Marco puoi aggiornare la domanda con l'intera sezione di functions.php relativa a questo e qualsiasi codice front end?

Jason Murray Jason Murray
2 mar 2015 00:04:05

Ho aggiornato la mia domanda con il file XML che sto utilizzando.

Marco Marco
2 mar 2015 00:24:09

@Marco ho aggiornato la soluzione e fornito un po' di contesto all'inizio e alla fine del blocco di codice, fammi sapere come va. Se dovesse diventare di nuovo schermo bianco, puoi attivare wp_debug in wp-config.php e verificare quale errore viene visualizzato?

Jason Murray Jason Murray
2 mar 2015 00:42:14

lo proverò non appena il mio server tornerà online (non correlato ma non usate bluehost)

Marco Marco
2 mar 2015 00:56:11

Fantastico!! Se fossi a NYC ti offrirei una birra. Ho ancora un problema, il post_per_page per qualche strana ragione si blocca a 45. Quando metto -1 ottengo un errore di parsing. Hai qualche idea?

Marco Marco
2 mar 2015 02:24:39

@Marco Magari! Potresti provare ad aggiungere nopaging => true, agli argomenti della tua query dei post vicino all'inizio.

Jason Murray Jason Murray
2 mar 2015 02:37:22

haha, beh fammelo sapere se mai succede! nopaging non sembra aver funzionato. Forse dovrei aprire una nuova domanda.

Marco Marco
2 mar 2015 02:47:38

Continuiamo questa discussione nella chat.

Jason Murray Jason Murray
2 mar 2015 02:51:40
Mostra i restanti 6 commenti
0

utilizza questo codice nel loop degli articoli.

$attimages = get_attached_media('image', $post->ID);
foreach ($attimages as $image) {
    echo wp_get_attachment_url($image->ID).'<br>';
}

questo codice restituirà tutti gli URL delle immagini allegate

30 ott 2019 17:01:18