2010-06-22 34 views
5

Busco la forma correcta de utilizar wp_get_attachment_image().forma correcta de utilizar wp_get_attachment_image() en wordpress

El siguiente código:

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

genera el siguiente resultado:

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 
     ) 
) 

El siguiente, sin embargo, no devuelve nada.

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

¿Qué estoy haciendo mal aquí?

Respuesta

0

La función wp_get_attachment_image sólo se obtiene una imagen que se ha subido a wordpress, que no da salida a una imagen en el contenido del puesto.

Usted tiene que emitir el contenido del post su imagen de ejemplo.

igual: echo $attachments['post_content'];

+0

¿Entonces Wordpress no tiene una función interna para obtener una imagen cargada en un tamaño específico? –

+0

No, la función que proporcionó es la correcta, pero debe pasarle la idea de que el archivo adjunto no sea una publicación. –

+0

Ah bien, gracias. Pero aún así debería devolver la imagen con el tamaño más cercano al tamaño especificado, ¿no es así? –

4

En realidad, no creo que la respuesta aceptada realmente responde a la pregunta.

Su problema es que estás pasando en el ID (54 en su ejemplo, por lo general en la jerga $post->ID WP) a wp_get_attachment_image(). Como puede verse en el codex, se supone que debes usar el id adjunto (ver $attachment_id abajo):

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

En otras palabras, usted tiene que hacer algo como esto:

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

Downvoter - pensamientos? – rinogo

0

wp_get_attachment_image puede aceptar cuatro valores como se puede ver:

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

Así que yo siempre uso:

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

Nota: podemos simplemente utilizar get_the_ID() para pasar Identificación del puesto activo. y aquí 700 es ancho y 600 es la altura imagen fijación de. también podemos pasar nuestra clase como array ("clase" => "img-responsive")

Cuestiones relacionadas