if文としては下記の記述方法だけです。

1.
if (条件式)
実行する文;

2.
if (条件式) {
実行する文ブロック
}

3,
if (条件式):
実行する文ブロック
endif;

エラーの内容は
if (empty($first_img)) $first_img = "/images/default.jpg";で構文は完結しているのに、

<span class="thumbnail2">
<img class="heit6" src="<php echo esc_attr( $first_img ); ?>" alt="" />
</span>
<php endif; ?> 同じ内容の構文を二度書いているのかというものでした。

ここからは持論ですが、<span></span>の前に<php if>と付け加えることで<php endif; ?>のエラーは起きず、
サムネイルがない場合の処理は正常に機能するのではないかと考えました。