• いつもお世話になります。

    初心者ですが
    ネットショップを制作しております。

    先日お力添えのおかげで、
    管理用、全商品倉庫のサイトで、
    カスタムフィールドの値を利用した、
    商品一覧カテゴリーページ、
    検索結果一覧ページ
    がうまく行きました。

    今回、カテゴリー別ではない、全商品一覧ページが必要になり、
    アーカイブ.phpを作成しましたが、

    <?php
    /*
    Template Name: archives
    */
    ?>
    <?php wp_get_archives("type=postbypost");?>

    等を書いた
    archives.phpをアップし、
    空のページを作成、テンプレートを指定しても、
    カテゴリーページを優先してしまっているようです。
    表示すると、一番目のカテゴリーの商品一覧のページが、カテゴリー.phpの形式で表示されてしまいます。
    URLは
    http://hoge.com/アーカイブページ名
    です。
    パーマリンク設定は
    /%category%/%postname%/になっています。

    いろいろ間違っていると思います。
    何か条件分岐?の指令も必要なのでしょうか?

    必要なページは、

    表示形式はカテゴリーや検索結果ページと同じ型にはめ、
    (一ページ百商品、画像とid、商品名を画面の幅に合わせて横並びに。

    表示内容は、

    全ての投稿記事(個別商品ページ)をカスタムフィールドのitem_id順に
    並べる、です。

    <?php wp_get_archives("type=postbypost");?>を使用するべきなのか、
    それをループの前後どこに置くのか、
    また別の記述が必要なのか、等、自力の検索で解決ができていない状況で、
    お力添えをいただけたらとても助かります。

    下記に、カテゴリ.phpのループ近辺をのせます。
    そちらを改造して、アーカイブページにできますでしょうか?
    何卒宜しくお願いいたします。
    初心者なので、お手数ですが、必要最低限な範囲でかまいませんので、
    具体的なコーディングをいただけましたらとても助かります。
    いつも感謝致します。_ (_ _) _

    <?php query_posts($query_string . "&showposts=100&posts_per_page=100"); ?>
    <?php
    if ( have_posts() ) :
      while ( have_posts() ) :
        the_post();
    ?>
    <center><ul id="list">
        <!-- 1行目が始まりますよ -->
        <li class="items">
            <div>
    <a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php trim_str_by_chars( get_the_title(), 5 ); ?>"><img src="http://hoge/<?php
      $mykey_values = get_post_custom_values('item_img');
      foreach ( $mykey_values as $key => $value ) {
        echo "$value";
      }
    ?>/.jpg" alt="" width="150" height="150" /></a>
                <h3><?php
      $mykey_values = get_post_custom_values('item_id');
      foreach ( $mykey_values as $key => $value ) {
        echo "$value";
      }
    ?><div class="hoge" id="item_<?php
      $mykey_values = get_post_custom_values('item_id');
      foreach ( $mykey_values as $key => $value ) {
        echo "$value";
      }
    ?>"></div><span class="item_<?php
      $mykey_values = get_post_custom_values('item_id');
      foreach ( $mykey_values as $key => $value ) {
        echo "$value";
      }
    ?>_hoge"></span></h3>
                <p><?php trim_str_by_chars( get_the_title(), 11 ); ?></p>
            </div>
        </li>
    </ul>
    
    <?php
      endwhile;
    else:
    ?>
    <center>お探しの商品は見つかりませんでした。</center>
    <?php endif; ?>
6件の返信を表示中 - 1 - 6件目 (全6件中)
  • 階層の読み込み順が低いから起きる現象です。つまり、同一のテンプレート内に
    category.php
    archive.php
    この二つが存在する時、category.phpが先に読まれるから…ということに起因していると思います。
    ※解説はこちら:http://wpdocs.sourceforge.jp/テンプレート階層

    回避策として考えられるのは、現行のカテゴリアーカイブ表示ロジックを別のロジックでくくり、条件分岐させる(ファイルを分ける分けないはお好み)のが手っ取り早いんじゃないかな、と。

    トピック投稿者 organic ear

    (@organic-ear)

    丁寧な解説をありがとうございます!

    そして遅くなり申し訳ありません。

    >>回避策として考えられるのは、現行のカテゴリアーカイブ表示ロジックを別のロジックでくくり、条件分岐させる>>

    ふむむぅ、スミマセン、今のカテゴリページの方を変えるという事でしょうか、、、
    理解ができなくてスミマセン。解説記事を探してはコピペをさせていただいての繰り返しで作っているのでお勉強が足りていないです。。。

    >>※解説はこちら:http://wpdocs.sourceforge.jp/テンプレート階層>>

    ありがとうございます。カテゴリ.phpがあるとArchive.phpは無視されるのですね、。

    無視されない名前にファイル名を変えるだけではダメなのですかね、、

    難しい、、、ですがいただいた助言を参考にまたいろいろ試して格闘してみます。

    読んでいただいてアドバイスもいただきありがとうございます。_ (_ _) _

    ちょっと思いついたんですが、全てのアイテムに共通のtagを付けて、tagのアーカイブページtag.phpで表示する…とかどうでしょう。

    トピック投稿者 organic ear

    (@organic-ear)

    はっっっ!!
    さらに書いて下さっていたのですね、
    本当にありがとうございます!

    そして反応が遅く申し訳ありません。

    ご提案やってみます、

    先にタグの一括エディットですね。

    重ねて感謝します_ (_ _) _

    1.新規ページを作成。
    2.新規ページのスラッグを products とかにする。
    3.page-products.php ファイルを作成する。
    4.page-products.php に以下の *ように* 記述する。

    <?php
    get_header();
    query_posts( array(
      'posts_per_page' => 100,
      'meta_key' => 'item_id',
      'orderby' => 'meta_value', // 数値なら meta_value_num
      'order' => 'ASC'
    ) );
    if ( have_posts() ) :
      while ( have_posts() ) :
        the_post();
        // 省略
      endwhile;
    endif;
    wp_reset_query();
    get_footer();
    ?>

    で OK(未検証)。

    トピック投稿者 organic ear

    (@organic-ear)

    kzさま
    書いて下さっていた事にまたもや
    気づかず、お礼の一言もなく
    時間も相当しばらく経ってしまい、
    申し訳ありませんでした。
    そしてありがとうございます!

    kzさんの
    助言の通りにしたところ、
    無事に、1ページ目が表示されました。
    ありがとうございます。
    とても助かります!

    そしてなぜか、
    2ページ目以降が全て1ページ目と同じ表示になってしまいます。
    ページナビも
    認識していないようです。
    何か書き加えが必要なのでしょうか?
    アドレスに、
    /pageや、&page=2等を足すと、
    メインインデックスを読み込んでしまっているようです。

    ちなみに余計な情報だと思いますがサイトを参考にして使用しているページナビは

    <?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> (%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' => 3,
    	'current' => ($paged ? $paged : 1),
            'prev_text' => '←前',
            'next_text' => '次→',
    )); ?></div>

    です。
    カテゴリー、検索結果ページではうまく行っております。

    もしまた助言をいただけましたら嬉しいです。
    本当にありがとうございます。_ (_ _) _

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「カテゴリーページ作成後、全記事一覧のアーカイブページを作成」には新たに返信することはできません。