[未解決] お勧め商品に空白の商品が表示される

2013 年 2 月 1 日

ホーム フォーラム バグ報告 [未解決] お勧め商品に空白の商品が表示される

このトピックには7件の返信が含まれ、2人の参加者がいます。4 年、 10 ヶ月前 nanbu さんが最後の更新を行いました。

8件の投稿を表示中 - 1 - 8件目 (全8件中)
  • 投稿者
    投稿
  • #52212

    kazz
    参加者

    動作に関するご質問の場合は必ずご記入ください。


    WordPress のバージョン:3.5

    Welcart のバージョン:1.2.3

    ご利用のテーマ:独自

    症状を確認したブラウザ:IE9、Opera12、Chrome24


    「先頭に固定表示」としている通常のブログ投稿がお勧め商品に表示されます。

    お勧め商品を設定している商品の単独画面を表示すると設定した商品のほかに空白(写真も商品名も価格も表示されない)の商品が一つ表示されます。

    この商品をクリックすると「先頭に固定表示」となっているブログ記事が表示されます。

    「先頭に固定表示」を外すと空白のお勧め商品が表示されなくなります。

    #66059

    nanbu
    参加者

    こんにちは。

    お勧め商品を設定している商品の単独画面とは何のページのことですか?

    こちらで、トップページやカテゴリーページを確認してみましたが、「先頭に固定表示」とした記事が表示されるということはありませんでした。

    #66060

    kazz
    参加者

    現在、wc_templates/wc_item_single.phpをテーマフォルダにコピーし、レイアウトを変更して使用しています。

    その中のusces_assistance_itemで表示されるお勧め商品でこの現象が発生しています。

    少し追いかけてみたところ、template_func.phpのusces_assistance_item関数内でusces_get_assistance_ids関数が正しくお勧め商品のIDを返しているにも関わらずwp_queryの戻り値には、前述の通り、「先頭に固定表示」としたブログ記事が含まれてしまっている状況です。

    wp_queryが内部的に生成しているSQLは

    SELECT SQL_CALC_FOUND_ROWS  wp_posts.ID
    FROM wp_posts
    WHERE 1=1 AND wp_posts.ID IN (361) AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private')
    ORDER BY wp_posts.post_date DESC LIMIT 0, 10

    ですが、返ってくる結果はID361の他に固定表示のID469が含まれています。

    #66061

    nanbu
    参加者

    usces_assistance_item()はお勧め商品ではなく、Welcartでは関連商品と呼んでおります。

    やはり、こちらではそう言った症状が出ないので確認ができないのですが、template_func.phpのusces_assistance_item()を、以下のコードに入れ替えてみていただけますでしょうか。こちらではこのコードでも問題ないことを確認しています。

    function usces_assistance_item($post_id, $title ){
    if (usces_get_assistance_id_list($post_id)) :
    global $post;
    query_posts( array('post__in'=>usces_get_assistance_ids($post_id)) );
    if(have_posts()) :
    add_filter( 'excerpt_length', 'welcart_assistance_excerpt_length' );
    add_filter( 'excerpt_mblength', 'welcart_assistance_excerpt_mblength' );
    ?>
    <div class="assistance_item">
    <h3><?php echo $title; ?></h3>
    <ul class="clearfix">
    <?php
    while (have_posts()) :
    the_post();
    usces_remove_filter();
    usces_the_item();
    ob_start();
    ?>
    <li>
    <div class="listbox clearfix">
    <div class="slit">
    <a href="<?php the_permalink(); ?>" rel="bookmark" title="<?php the_title(); ?>"><?php usces_the_itemImage(0, 100, 100, $post); ?></a>
    </div>
    <div class="detail">
    <div class="assist_excerpt">
    <a href="<?php the_permalink(); ?>" rel="bookmark" title="<?php the_title(); ?>"><h4><?php usces_the_itemName(); ?></h4></a>
    <?php the_excerpt(); ?>
    </div>
    <div class="assist_price">
    <?php if (usces_is_skus()) : ?>
    <?php _e('$', 'usces'); ?><?php usces_the_firstPrice(); ?>
    <?php endif; ?>
    </div>
    </div>
    </div>
    </li>
    <?php
    $list = ob_get_contents();
    ob_end_clean();
    echo apply_filters('usces_filter_assistance_item_list', $list, $post);
    endwhile; ?>

    </ul>
    </div><!-- end of assistance_item -->
    <?php
    wp_reset_query();
    usces_reset_filter();
    remove_filter( 'excerpt_length', 'welcart_assistance_excerpt_length' );
    remove_filter( 'excerpt_mblength', 'welcart_assistance_excerpt_mblength' );
    endif;
    endif;
    }

    #66062

    kazz
    参加者

    ご提示頂いたコードで試してみました。

    やはり固定表示の記事が含まれてしまいます。

    さらに$postが汚れるせいか、商品画像が2重に表示されたりします。

    WP_Queryでsticky_postが含まれてくるのはWordPressの仕様として正しい動きのように思うのですがどうでしょうか?

    ちなみにこちらで試して効果があったのは次の2つでした。

    1.ignore_sticky_postsを追加する

    $assistanceposts = new WP_Query( array('post__in'=>usces_get_assistance_ids($post_id), 'ignore_sticky_posts'=>1) );

    2.カテゴリーを指定する

    $assistanceposts = new WP_Query( array('post__in'=>usces_get_assistance_ids($post_id), 'category_name'=>'item') );

    あと蛇足ですが、ループの最後ではwp_reset_query()の他に、wp_reset_postdata()も行った方が良いのではないでしょうか。

    #66063

    nanbu
    参加者

    kazzさん、ありがとうございます。確かにそのようにした方が間違いないかと思います。

    ただ合点がいかないのは、こちらの環境ではsticky_postが表示されないということです。まるで関係のない「Hello world!」を固定表示に設定していますが、商品詳細の関連商品欄にはタグ付けされたものしか表示されません。何かWordPressに設定が有りましたでしょうか。

    #66064

    kazz
    参加者

    確かにそちらの環境で再現できないのが引っ掛かるところですね。

    WordPressの設定を見てもそれらしいものが見当たりません。

    #66065

    nanbu
    参加者

    まずは、カテゴリーを指定するよう仕様を変更してみようと思います。ありがとうございました。

8件の投稿を表示中 - 1 - 8件目 (全8件中)

このトピックに返信するにはログインが必要です。