web-dev-qa-db-fra.com

Affichage de la/des pièce (s) jointe (s) en haut de single.php

J'utilise la dernière version de WP et souhaite afficher la première image jointe à l'article en haut de son contenu. Quel code dois-je ajouter à single.php pour que cela se produise?

1
Scott B

Les pièces jointes sont considérées comme des enfants du poste auquel elles sont attachées. Cela devrait donc fonctionner:

$images=get_children( array('post_parent'=>$post->ID,
                            'post_mime_type'=>'image',
                             'numberposts'=>1));
echo wp_get_attachment_image($images[0]->ID, 'large');

pour une grande image ... remplacez "grand" par la définition de taille souhaitée ou par un tableau de largeur, hauteur.

2
goldenapples

Fonction permettant d’obtenir la première image jointe à un message

function the_image($size = 'medium' , $class = ”){
global $post;

//setup the attachment array
$att_array = array(
'post_parent' => $post->ID,
'post_type' => 'attachment',
'post_mime_type' => 'image',
'order_by' => 'menu_order'
);

//get the post attachments
$attachments = get_children($att_array);

//make sure there are attachments
if (is_array($attachments)){
//loop through them
foreach($attachments as $att){
//find the one we want based on its characteristics
if ( $att->menu_order == 0){
$image_src_array = wp_get_attachment_image_src($att->ID, $size);

//get url – 1 and 2 are the x and y dimensions
$url = $image_src_array[0];
$caption = $att->post_excerpt;
$image_html = '<img src="%s" alt="%s" />';

//combine the data
$html = sprintf($image_html,$url,$caption,$class);

//echo the result
echo $html;
}
}
}
}

Nous devons maintenant indiquer à WordPress où afficher cette image

Ajoutez cette ligne à l'endroit où vous souhaitez afficher l'image:

<?php the_image('medium','post-image'); ?>

Le Gotcha pour utiliser cette approche

Si vous ajoutez une image à l'éditeur de publication, celle-ci s'affichera 2 fois.

Un cas d'utilisation de cette approche

Cela fonctionne très bien lorsque vous souhaitez utiliser les vignettes (image sélectionnée) sur les pages de votre blog, puis afficher une version plus grande de l'image dans single.php et ne pas avoir à définir une image sélectionnée puis à l'insérer manuellement. Avec cette méthode, il vous suffit de définir l’image sélectionnée pour l’attacher à la publication et d’en finir.

1
Chris_O

Je ne suis pas sûr de savoir comment le limiter à la première pièce jointe (et comment le limiter aux images jointes), mais cela devrait être un bon point de départ. De Le Codex :

<?php

$args = array(
    'post_type' => 'attachment',
    'numberposts' => -1,
    'post_status' => null,
    'post_parent' => $post->ID
    ); 
$attachments = get_posts($args);
if ($attachments) {
    foreach ($attachments as $attachment) {
        echo apply_filters('the_title', $attachment->post_title);
        the_attachment_link($attachment->ID, false);
    }
}

?>
0
Travis Northcutt