it-swarm-pt.tech

Exibindo Anexo (s) no topo de single.php

Estou usando a versão mais recente de WP e gostaria de exibir a primeira imagem anexada à postagem na parte superior do conteúdo da postagem. Qual código devo adicionar ao single.php para que isso aconteça?

1
Scott B

Anexos são considerados filhos da postagem à qual estão vinculados, portanto, isso deve funcionar:

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

para uma imagem grande ... substitua "large" pela definição de tamanho desejada ou por um array de largura e altura.

2
goldenapples

Função para obter a primeira imagem anexada a um post

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;
}
}
}
}

Agora precisamos informar ao WordPress onde exibir esta imagem

Adicione esta linha onde você deseja exibir a imagem:

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

O Gotcha para usar esta abordagem

Se você adicionar uma imagem ao editor de postagem, ela será exibida duas vezes.

Um caso para usar esta abordagem

Isso funciona muito bem quando você deseja usar miniaturas (imagem em destaque) nas páginas do seu blog, em seguida, exibir uma versão maior da imagem em single.php e não quer ter que definir uma imagem em destaque, em seguida, inseri-lo manualmente. Com esse método, basta definir a imagem em destaque para anexá-la ao post e terminar com ela.

1
Chris_O

Não sei como limitá-lo ao primeiro anexo (e como limitá-lo aos anexos de imagem), mas isso deve ser um bom ponto de partida. De O 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