2010-06-22 20 views
5

Sto cercando il modo corretto di utilizzare wp_get_attachment_image().Modo corretto di utilizzare wp_get_attachment_image() in wordpress

Il seguente codice:

<?php 
    $args = array(
     'type' => 'attachment', 
     'category_name' => 'portfolio' 
     ); 
    $attachments = get_posts($args); 
    print_r($attachments); 
?> 

genera il seguente risultato:

Array 
(
    [0] => stdClass Object 
     (
      [ID] => 54 
      [post_author] => 1 
      [post_date] => 2010-06-22 00:32:46 
      [post_date_gmt] => 2010-06-22 00:32:46 
      [post_content] => <a href="http://localhost/wordpress/wp-content/uploads/2010/06/Capture.jpg"><img class="alignnone size-medium wp-image-55" title="Capture" src="http://localhost/wordpress/wp-content/uploads/2010/06/Capture-300x114.jpg" alt="" width="300" height="114" /></a> 
      [post_title] => Our Own Site 
      [post_excerpt] => 
      [post_status] => publish 
      [comment_status] => open 
      [ping_status] => open 
      [post_password] => 
      [post_name] => our-own-site 
      [to_ping] => 
      [pinged] => 
      [post_modified] => 2010-06-22 00:40:22 
      [post_modified_gmt] => 2010-06-22 00:40:22 
      [post_content_filtered] => 
      [post_parent] => 0 
      [guid] => http://localhost/wordpress/?p=54 
      [menu_order] => 0 
      [post_type] => post 
      [post_mime_type] => 
      [comment_count] => 0 
      [filter] => raw 
     ) 
) 

Di seguito, tuttavia, non restituisce nulla.

<?php 
    echo wp_get_attachment_image(54, array('300', '300')); 
?> 

Cosa sto facendo di sbagliato qui?

risposta

0

La funzione wp_get_attachment_image ottiene solo un'immagine caricata su Wordpress, non restituisce un'immagine nel contenuto del post.

È necessario stampare il contenuto del post per l'immagine di esempio.

come: echo $attachments['post_content'];

+0

Quindi Wordpress non ha una funzione interna per ottenere un'immagine caricata ad una dimensione specifica? –

+0

No, la funzione che hai dato è quella giusta, ma devi passare l'idea dell'allegato stesso non un post. –

+0

Ah ok, grazie. Ma dovrebbe comunque restituire l'immagine con la dimensione più vicina alla dimensione specificata, non è vero? –

4

In realtà, non credo che la risposta accettata risponde realmente alla domanda.

Il tuo problema è che si sta passando il posta id (54 nel tuo esempio, in genere $post->ID in WP gergo) per wp_get_attachment_image(). Come si può vedere nella codex, si suppone di utilizzare l'ID attacco (vedi $attachment_id sotto):

wp_get_attachment_image($attachment_id, $size, $icon); 

In altre parole, hai avuto modo di fare qualcosa di simile:

$image_attr = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'medium'); 
funzione
+0

Downvoter - pensieri? – rinogo

0

wp_get_attachment_image può accettare quattro valori come potete vedere:

wp_get_attachment_image (int $attachment_id, string|array $size = 'thumbnail', bool $icon = false, string|array $attr = '') 

Quindi io uso sempre:

<?php echo wp_get_attachment_image(get_the_ID(), array('700', '600'), "", array("class" => "img-responsive")); ?> 

Nota: possiamo semplicemente usare get_the_ID() di passare id di posta attiva. e qui 700 è la larghezza e 600 è l'altezza dell'immagine allegata. possiamo anche passare la nostra classe come array ("class" => "img-responsive")

Problemi correlati