function small_image($url, $siz = "medium") {
  $attachments = get_children(array('post_parent' => get_the_ID(), 'post_type' => 'attachment', 'post_mime_type' => 'image', 'orderby' => 'menu_order'));
  $attachments_count = count($attachments);
  foreach ($attachments as $key => $value) {
    if ($attachments[$key]->guid == $url) {
      return wp_get_attachment_image_src($key, $siz);	// "thumbnail","medium","large","full"
    }
  }
  return false;
}

the_post()したあとで使うこと。そうしないと、get_the_ID()がちゃんと値を返さないから。(当たり前)
引数($url)には、オリジナル・サイズ(fullサイズ)の画像URLをセットしておく。
記事に紐づいた画像は1つとは限らないので、なんらかの方法で画像を特定できないと困るということと、基本的にカスタム・フィールドに画像を登録して使うことを想定しているのでこういう仕様になってます。
サイズはサムネイル(”thumbnail”)、中(”medium”)、大(”large”)、フルサイズ(”full”)で、指定しなければ中サイズを返します。
戻り値は配列で、$ret[0]=そのサイズの画像URL、$ret[1]=幅px、$ret[2]=高さpxです。
使い方はこんな感じ。

$image = small_image(post_custom('cf_image_1'));  // カスタムフィールドから画像URLをセット
if ($image !== false) {
  <a href="">
  <img src="" width="" height="" />
  </a>
}

 
参考したページ:画像URLの取得画像ファイルの情報を取得する2.5 How to create a category template for a gallery ?WordPress2.5~2.6 サムネイル画像を取得して表示カスタムフィールドに登録した画像のサムネールやらを取得する。WordPress 2.1 のアタッチメント API