Manière correcte d’utiliser wp_get_attachment_image() dans wordpress

Publié par Jean-Michel le

Je cherche la bonne façon d’utiliser wp_get_attachment_image().

Le code suivant :

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

Génère le résultat suivant :

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

Ce qui suit, cependant, ne renvoie rien.

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

Qu’est-ce que je fais de mal ici ?

Solution n°1 trouvée

La fonction wp_get_attachment_imagen’obtient qu’une image qui a été téléchargée sur wordpress, elle ne génère pas d’image dans le contenu du message.

Vous devez afficher le contenu de la publication pour votre exemple d’image.

Comme:echo $attachments['post_content'];

Solution n°2 trouvée

En fait, je ne pense pas que la réponse acceptée réponde vraiment à la question.

Votre problème est que vous transmettez l’ identifiant de publication ( 54dans votre exemple, généralement $post->IDdans le langage WP) à wp_get_attachment_image(). Comme on peut le voir dans le codex, vous êtes censé utiliser l’ identifiant de pièce jointe (voir ci- $attachment_iddessous):

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

En d’autres termes, vous devez faire quelque chose comme ceci :

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

Solution n°3 trouvée

La fonction wp_get_attachment_image peut accepter quatre valeurs comme vous pouvez le voir :

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

Donc j’utilise toujours :

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

Remarque : nous pouvons simplement utiliser get_the_ID() pour transmettre l’identifiant de la publication active. et ici 700 est la largeur et 600 est la hauteur de l’image de pièce jointe. nous pouvons également passer notre classe en tant que array( « class » => « img-responsive » )

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *