Re: TOPページでif ( usces_is_item() )の条件分岐が出来ない

ホーム フォーラム 使い方全般 TOPページでif ( usces_is_item() )の条件分岐が出来ない Re: TOPページでif ( usces_is_item() )の条件分岐が出来ない

#61177

nanbu
キーマスター

こんにちは。

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 宣言します。

ほとんどの場合はこれで商品かどうかの判断ができると思います。