Ministério da Cultura

the_thumb

Ordenando o posicionamento das imagens

Ordenando o posicionamento das imagens

Desde quando comecei a trabalhar com WP a funcionalidade mais requisitada foi sempre inserir uma imagem nas chamadas dos posts. Para isso criei uma função que puxa, do banco de dados, a primeira imagem de um post. Apartir da versão 2.6 do WP é possível ordenar as imagens do post através de um drag’n drop nas opções de galeria, como mostra a imagem ao lado, sendo assim, basta arrastar para a primeira posição a imagem que quer usar. Essa imagem não precisa necessáriamente estar sendo utilizada no conteúdo do post, apenas ter sido anexada a ele.

Para utilizar essa função, abra o arquivo functions.php do seu tema, e depois cole o código abaixo.

function the_thumb($size = "medium", $add = "")
{
  global $wpdb, $post;

  $thumb = $wpdb->get_row("SELECT ID, post_title FROM {$wpdb->posts} WHERE post_parent = {$post->ID} AND post_mime_type LIKE 'image%' ORDER BY menu_order");

  if(!empty($thumb))
  {
    $image = image_downsize($thumb->ID, $size);

    print "<img src='{$image[0]}' alt='{$thumb->post_title}' {$add} />";
  }
}

Essa função funciona como uma template tag do WordPress, basta chamá-la no local do seu tema onde você quer que a imagem apareça, opcionalmente você pode escolher o tamanho da imagem ($size) e adicionar alguns parâmetros à tag da imagem ($add), como classes, largura, altura, etc.

Acho que é mais fácil mostrando uns exemplos.

1. Mostrar a imagem no tamanho médio (padrão 300 x 300) sem nenhum dado adicional:

<?php the_thumb('medium'); ?>

Resultaria em:

<img src='http://seusite.com/caminho/da/imagem-300x300.jpg' alt='titulo-da-imagem' />

2. Carregar uma miniatura da imagem (padrão 150 x 150) com a classe ‘alignleft’:

<?php the_thumb('thumbnail', 'class="alignleft"'); ?>

Retornaria:

<img src='http://seusite.com/caminho/da/imagem-150x150.jpg' alt='titulo-da-imagem' class='alignleft' />

3. Forçar uma imagem média a um tamanho diferente:

<?php the_thumb('medium', 'width="300" height="275"'); ?>

Apresentaria:

<img src='http://seusite.com/caminho/da/imagem-300x300.jpg' alt='titulo-da-imagem' width='300' height='275' />

Notem que forçando um tamanho para uma imagem apenas altera seu tamanho via html, o que pode distorcer a imagem se não for usado proporcionalmente.

Tela de configuração de mídia

Tela de configuração de mídia

Também é importante lembrar que é possível definir o tamanho das imagens nas configurações do WordPress, para isso vá em ‘Configurações > Mídia’ e altere as medidas a seu gosto.

Esses dias vi um artigo no wprecipes que mostrava como pegar a primeira imagem de um post e mostra-la, o problema da função deles é que ela exige que a imagem esteja no conteúdo do post o que muitas vezes não é interessante, primeiro pois força o autor a usar uma imagem no conteúdo e segundo por que a imagem que aparece na chamada tem sempre que ser a primeira que aparece no post.

12 Comentarios

  • Guilherme

    04/03/2009 às 12:44

    Resposta »

    Parabéns, muito interessante!

  • Cómo most..

    08/03/2009 às 17:18

    Resposta »

    [...] existe otra función, que personalmente, me gusta más. Fue desarrollada por Marcelo Mesquita, un desarrollador Web. Este código usa las miniaturas generadas automáticamente por WordPress, y [...]

  • Luke Stempien

    10/03/2009 às 12:12

    Resposta »

    Hi Marcelo Mesquita,

    I’m having difficulty getting your code to return my thumbnails. Any suggestions or are their any dependencies? I’m not getting any php errors so at least that’s a start.

    If I change

    if(!empty($thumb))

    to

    if(empty($thumb))

    it will return

    in the generated html page so I guess it’s just not seeing any images associated with the posts?

    Much appreciated, this is exactly what I was looking for.

  • Vitor

    01/04/2009 às 10:56

    Resposta »

    Muito bom isso… foi muito util para o blog…
    Obrigado mesmo continue assim…

  • Sigales

    02/07/2009 às 18:34

    Resposta »

    Olá!
    Primeiramente, parabens pela função! Esta sendo de muita valia.
    Estou com uma pequena dificuldade, quando altero o tamanho das imagens nas configurações>midia esta função não localiza a imagem.

    Exemplo:
    thumbnail: 150×200
    a função continua a procura pela imagem 150×150.

    ps.: tbm sou mesquita!

    Aguarco contato.

  • Filipe Siciliano

    07/07/2009 às 22:34

    Resposta »

    Marcelo,

    Parabéns…. Ótimo função.

    Me ajudou muito !

    Abraços

  • Marcelo César

    05/08/2009 às 13:17

    Resposta »

    Fala Marcelo,

    seguinte, ser eu utilizar a função em uma page ao invez de post, vai funcionar?

    Vlw!

  • Silvio

    29/09/2009 às 11:10

    Resposta »

    Cara, valeu mesmo. Estou há um tempão procurando por uma função como essa. O Wordpress Mu tem muita dificuldade com imagens.

  • Маша

    24/01/2010 às 21:34

    Resposta »

    Мдя

  • Marcelo Mesquita

    11/03/2009 às 11:39

    Resposta »

    Hi Luke,
    this function has no dependencies, you just have to put it on functions.php file then call <?php the_thumb(); ?> as a template tag in your theme. That function returns the image attached from your post, not necessarily on the content.

    If you continuing have problem, send me a link with a example so is easier to debug.

    Thanks.

  • Marcelo Mesquita

    02/07/2009 às 19:10

    Resposta »

    Olá parente…
    que bom que esta função está te servindo. Ela busca o endereço da imagem direto no banco de dados, se você altera a configuação da imagem, é preciso fazer o upload novamente para que os novos parâmetros comecem a valer.

    Abraço.

  • Marcelo Mesquita

    05/08/2009 às 14:23

    Resposta »

    E aê Marcelo,
    funciona sim, essa função buscas os arquivos de imagem anexados à tabela posts, onde se encontram tanto as páginas quanto os posts.

    Abraço!

Deixe seu comentário