こんにちは。
query_posts() を実行するとglobal $posts が書き換わります。更にthe_post() を実行するとglobal $post が書き換わてしまいます。usces_is_item() はこのglobal $post を見て商品かどうかを判断しています。
つまり、これらのテンプレートタグを実行すると、ここまで表示してきた記事データとは別の記事の内容が表示されてしまうのです。ですのでusces_is_item() を実行しても正しい判断ができなくなると言うことになります。
本来、他の記事(商品)データを取得するには新しいオブジェクト(new WP_Query)を生成する方法をWordPress Codex でも推奨しています。
http://wpdocs.sourceforge.jp/The_Loop
しかし、Welcart のテンプレートタグはこの新しいオブジェクトからデータを取得するようにはできていません。(難しくは無いので近々対応したいと思います)
そこで、今回の目的がusces_is_item() での条件分岐であるなら、この様にして応急処置を取ることができます。
テーマのheader.php の冒頭でusces_is_item() の結果を保存します。
global $isitem;
$isitem = usces_is_item();
代入する変数名は何でも構いません、global 宣言しておくことでボディーの部分でもこの変数が使えます。
ボディーでの条件分岐はこの様になります。
if( $isitem ){
echo '商品です';
}else{
echo '商品以外です';
}
footer.php で使用するには、冒頭にglobal $isitem;
を置いてfooter でも global 宣言します。
ほとんどの場合はこれで商品かどうかの判断ができると思います。