• 解決済 organic ear

    (@organic-ear)


    初めて質問させていただきます。
    サイト制作初心者で、わかっていない事が多いと思います、
    申し訳ありません、よろしくお願いいたします。

    携帯ショッピングサイトを作りたく、cssはほとんど使わず、オリジナルテーマを作成しております。Ktai Styleは使用しておりません。

    いろんなサイトを参考にさせていただき、サイト内検索機能を最近追加しました。

    検索結果は無事表示されるのですが、なぜか、検索結果でヒットした件数(1~10件)分の範囲で、表示が繰替えしてしまいます。

    例えば、検索結果が4件だとすると、
    ”hogeの検索結果4件中1~4件目”とありながら、

    その4件が4回縦並びに続けて表示され、トータル16件表示されます。

    9件だと9回リピートして81件ずらっと表示されてしまいます。

    わかりにくかったら申し訳ありません。

    サイト内検索機能を付ける過程としては、

    searchform.php、searchpage.php、search.phpを作成しました。

    search.phpの内容は、
    1ページ10件の表示、
    また、
    http://www.yuriko.net/arc/2008/07/26/navigation/
    を参考にさせていただき、プラグインなしでのページナビを付けました。

    また、フォーラムを参考にさせていただき、
    ”hogeの検索結果hoge件中hoge件を表示”というセクションも付けさせていただきました。
    助かり感謝しております。

    search.php内に問題があるのもわからないのですが、

    コーディングは、下記の通りになっています。
    初歩的なミスや、見苦しい場合もあると思いますが、目を通していただける方いらっしゃいましたら感謝です。

    <body>検索ボックス、パンクズナビ、この下から検索結果の件数を表示させるセクションです。

    <?php
    global $wp_query;
    $total = intval($wp_query->found_posts);
    if($total > 0){
      if($page = get_query_var('paged')) $page--;
      $per_page = get_query_var('posts_per_page');
      $from = $page * $per_page;
      $to = min($from++ + get_query_var('posts_per_page'), $total);
      printf(
        '<div style="font-size:small;">「%s」<br>の検索結果 <br> (%d件中) %d〜%d件目</div>',
        get_search_query(),
        $total,
        $from,
        $to
      );
    }else{
      printf('「%s」の検索結果', get_search_query());
    }
    ?>

    次の行からページナビを表示させるセクションです。

    <div class="tablenav"><?php global $wp_rewrite;
    $paginate_base = get_pagenum_link(1);
    if (strpos($paginate_base, '?') || ! $wp_rewrite->using_permalinks()) {
    	$paginate_format = '';
    	$paginate_base = add_query_arg('paged', '%#%');
    } else {
    	$paginate_format = (substr($paginate_base, -1 ,1) == '/' ? '' : '/') .
    	user_trailingslashit('page/%#%/', 'paged');;
    	$paginate_base .= '%_%';
    }
    echo paginate_links( array(
    	'base' => $paginate_base,
    	'format' => $paginate_format,
    	'total' => $wp_query->max_num_pages,
    	'mid_size' => 5,
    	'current' => ($paged ? $paged : 1),
    )); ?></div>
    </h2></CENTER>

    次の行からループです。
    <?php if(have_posts()) : ?><?php while (have_posts()) : the_post(); ?>
    <?php if($posts): foreach($posts as $post): setup_postdata($post); ?>

    次から表示内容です。

    <center><table width=”240″ border=”0″ hight=”80″><tr><td width=”80″ hight=”80″>
    ” rel=”bookmark” title=”Permanent Link to <?php trim_str_by_chars( get_the_title(), 5 ); ?>”><img class=”aligncenter” src=”hoge.jpg” alt=”” width=”80″ height=”80″ />
    </td><td width=”160″ hight=”80″>” rel=”bookmark” title=”Permanent Link to <?php trim_str_by_chars( get_the_title(), 5 ); ?>”><?php trim_str_by_chars( get_the_title(), 25 ); ?></td></tr></table></center>
    <?php endforeach; endif;
    ?>
    <?php endwhile; ?>
    <?php else: ?>
    <center>お探しの商品は見つかりませんでした。</center>
    <?php endif; ?>`
    この下に再びページナビ、footerとなります。

    ここに、ダブって表示される原因もあるのでしょうか、、、?
    説明不足だったり、わかりにくかったりしたら申し訳ありません。
    ご指摘いただける方いらっしゃいましたらお願いいたします。
    いろいろ申し訳ありません。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • すみません、せっかく丁寧に説明していただけてるのですが、切れ目がわかりづらいです。

    ページナビを表示させるセクションです。
    というブロックと書いてらっしゃるところも、唐突に</h2>とか</center>とか出てきてるので。

    途中、余計な説明とかいらないので、ソースを書くなら、ちゃんとcodeなりb-quoteなりでしっかり囲っちゃってもらえますか?

    モデレーター jim912

    (@jim912)

    organic earさん、こんにちは。

    <?php if(have_posts()) : ?><?php while (have_posts()) : the_post(); ?>

    <?php if($posts): foreach($posts as $post): setup_postdata($post); ?>

    は、繰り返し処理を行う部分の別な書き方でもあります。
    これが、2重におこなわれているために、同じ記事が何回も表示されてしまうのです。

    今流の書き方であれば、

    <?php if($posts): foreach($posts as $post): setup_postdata($post); ?>

    <?php endforeach; endif;
    ?>

    を消すのが良いかと思います。
    search.phpだけでなく、同じように繰り返し表示をしているカテゴリー表示のテンプレートなども参考になると思いますので、記述方法を比較してみて下さい。

    トピック投稿者 organic ear

    (@organic-ear)

    kvexさん
    ご指摘ありがとうございます。
    注意不足でクォートがずれてしまいました。
    せっかく読んでいただいた方に不快にならないよう、
    なるべく奇麗にまとまるよう気をつけて行きます。
    長々した質問を読んでいただき、コメントまでいただき、ありがとうございました。

    Jim912さん

    ご指摘の通りにしましたら
    一瞬で解決しました!
    わかりやすい丁寧なご指導ありがとうございました。
    長々わかりにくい質問を読んで、お答えいただき、解説までしていただき、ありがとうございました。

    お二人の助言でとても助かりました。
    時間をさいていただき
    本当にありがとうございました。 _ (_ _) _

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「サイト内検索、検索結果の表示がダブってしまいます。」には新たに返信することはできません。