Estoy buscando la forma correcta de usar wp_get_attachment_image().
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
)
)
Lo siguiente, sin embargo, no devuelve nada.
<?php
echo wp_get_attachment_image(54, array('300', '300'));
?>
¿Qué estoy haciendo mal aquí?
rinogo
En realidad, no creo que la respuesta aceptada realmente responda la pregunta.
Tu problema es que estás pasando en el ID del mensaje (54
en tu ejemplo; típicamente $post->ID
en la jerga de WP) a wp_get_attachment_image()
. Como puede verse en el códicese supone que debes usar el identificación del archivo adjunto (ver $attachment_id
abajo):
wp_get_attachment_image( $attachment_id, $size, $icon );
En otras palabras, tienes que hacer algo como esto:
$image_attr = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'medium');
La función wp_get_attachment_image puede aceptar cuatro valores como puede ver:
wp_get_attachment_image ( int $attachment_id, string|array $size="thumbnail", bool $icon = false, string|array $attr="" )
Entonces siempre uso:
<?php echo wp_get_attachment_image( get_the_ID(), array('700', '600'), "", array( "class" => "img-responsive" ) ); ?>
Nota: simplemente podemos usar obtener_el_ID() para pasar la identificación de la publicación activa. y aquí 700 es ancho y 600 es altura de imagen adjunta. también podemos pasar nuestra clase como array( “clase” => “img-sensible” )
La función wp_get_attachment_image
solo obtiene una imagen que se cargó en wordpress, no genera una imagen en el contenido de la publicación.
Tienes que generar el contenido de la publicación para tu imagen de ejemplo.
Me gusta: echo $attachments['post_content'];
-
Entonces, ¿Wordpress no tiene una función interna para obtener una imagen cargada en un tamaño específico?
– Meiring constante
22 de junio de 2010 a las 1:36
-
No, la función que diste es la correcta, pero debes pasarle la idea del archivo adjunto en sí, no una publicación.
– Aarón Butacov
22 de junio de 2010 a las 1:38
-
Ah vale gracias. Pero aún debería devolver la imagen con el tamaño más cercano al tamaño especificado, ¿no es así?
– Meiring constante
22 de junio de 2010 a las 1:42
-
Sí, al cargar archivos adjuntos lo hará.
– Aarón Butacov
22 de junio de 2010 a las 1:54
-
Lo anterior es un archivo adjunto y, sin embargo, no lo carga. ¿Podría ser esto un error?
– Meiring constante
22 de junio de 2010 a las 9:14
Debes darle una identificación de un archivo adjunto Lo que hiciste mal fue el
$args
parámetro – no haytype
parámetro, correcto es'post_type' => 'attachment'
🙂 porque por defecto es Publicar (post_type
espost
), le estaba dando una identificación de alguna “publicación”, no “archivo adjunto” 🙂– jave.web
18/06/2020 a las 23:00