サポート » 使い方全般 » カスタムフィールドを使用したカテゴリのアーカイブページを作成するに

  • 解決済 nekokonnichiha

    (@nekokonnichiha)


    現在、custom post type UIとCustom Field Templateを使って複数のカテゴリ別に、カスタムフィールドを作成しています。

    ■したいこと
     ・こちらを使って入力した項目のカテゴリごとの一覧ページを作成したい
     ・ページナビを設置したい

    ■やってみたこと

    ・カテゴリAの投稿数 10件
    ・カテゴリAの投稿一覧を表示する新規ページを、固定ページから作成(category_a)
    ・設定画面より1ページの表示件数は4件に設定

    ↓↓↓↓↓結果↓↓↓↓↓↓

    ・ページナビで1,2,3までのリンクが出力されている
    ・2をクリックするとURLがaaa.com/category_a/page/2になる
    ・エラーページになる

    ーーーーーーーーーーーーーー

    ■考察…
     ・カテゴリAの投稿一覧を表示する新規ページを、固定ページから作成(category_a)
       ↑ここが間違っているんだろうと思う…
      
      ↓
    「投稿」からカテゴリ分けして表示されたページのURLは
       【aaa.com/カテゴリ名/記事名.html】
    となり、【aaa.com/カテゴリ名/】とすると、category.phpで指示したように表示されています。
    なので、同じようにカスタムフィールドを使用して入力した投稿に対してもアーカイブページが出来ればいいのではないか?と思いました。
    ………
    ーーーーーーーーーーーーーー

    ここで完全に手詰まりになってしまいました。。
    質問、説明と分かりにくい部分が多々あるかと思いますが、ご教授いただければ幸いです。

    念のため、現在記述しているソース(抜粋)を記述します。

    よろしくお願いいたします。

    <?php } else if (is_page(‘voice’)) { ?>
    <h2><img src=”<?php bloginfo(‘stylesheet_directory’); ?>/images/voice/title.gif” alt=”生徒さんの声” /></h2>
    <?php
    $paged = (get_query_var(‘paged’)) ? get_query_var(‘paged’) : 1; //現在のページ番号取得
    $myQuery = new WP_Query(); // WP_Queryオブジェクト生成
    $param = array( //パラメータ。
    ‘paged’ => $paged, //常に現在のページ番号を渡す
    ‘posts_per_page’ => ’10’, //(整数)- 1ページに表示する記事数。-1 ならすべての投稿を取得。
    ‘post_type’ => ‘voice’, //カスタム投稿タイプのみを指定。
    ‘post_status’ => ‘publish’, //取得するステータスを指定:publish(公開済み)
    ‘orderby’ => ‘ID’,
    ‘order’ => ‘DESC’ //降順。大きい値から小さい値の順。
    );
    $myQuery->query($param); // クエリにパラメータを渡す
    ?>
    <?php if($myQuery->have_posts()): while($myQuery->have_posts()) : $myQuery->the_post(); ?>
    <div class=”voice_link”>
    <img src=”<?php bloginfo(‘stylesheet_directory’); ?>/images/voice/pin.png” class=”alphafilter pin” alt=”point” />
    <table>
    <tr>
    <?php if(has_post_thumbnail()) { ?>
    <td class=”photo” rowspan=”3″><?php the_post_thumbnail(array(175,136)); ?></td>
    <?php } ?>
    <td class=”name”><?php the_title(); ?></td></tr>
    <tr><td class=”couse”><?php
    $ary = get_post_meta($post->ID,’couse name’, false);
    $n = count($ary);
    if ($n==0) echo “”;
    else for ($i=0;$i<$n;$i++) echo “$ary[$i] “;
    ?></td></tr>
    <tr><td class=”body text”><?php the_content(); ?></td></tr>
    </table>
    </div>
    <?php endwhile;endif; ?>
    <!–ページナビここから–>
    <div id=”pageNate”>
    <?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’ => $myQuery->max_num_pages,
    ‘mid_size’ => 5,
    ‘current’ => ($paged ? $paged : 1),
    ));
    ?>
    </div>
    <!–ページナビここまで–>
    <?php } else { ?>

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • モデレーター gatespace

    (@gatespace)

    こんにちは。
    用語として「カテゴリ」を使われていますが、カスタム投稿タイプのアーカイブの話ですか?
    (本来の)カテゴリの話なのか、カスタム投稿タイプなのかで、解答すべき内容が大幅に変わりますので、正確なWordPressの用語で説明してください。

    トピック投稿者 nekokonnichiha

    (@nekokonnichiha)

    失礼いたしました!

    カスタム投稿タイプのアーカイブです。
    そこで、複数の内容?を作成していたため、カテゴリという言葉を使ってしまっていました。

    よろしくお願いいたします。

    モデレーター gatespace

    (@gatespace)

    カスタム投稿のアーカイブページを固定ページで作ることも可能ですが、
    どうしても固定ページでなければならない理由がないのであれば、
    カスタム投稿タイプにアーカイブを持たせたほうが良いです。

    やり方は以下のスレッドを参照にしてみてください。
    [解決済み] Custom Post Type UIの一覧記事取得
    http://ja.forums.wordpress.org/topic/9191?replies=3

    その上でナビゲーションを上手く実装できないのであればまた質問してみてください。

    余談:
    ネット上で良く固定ページにアーカイブ機能を持たせるやり方が書かれていますが、
    注意しないとページ送りがうまくいかなかったりします。
    (以前のバージョンではカスタム投稿タイプにアーカイブを持たせることができなかったため)
    個人的には上記のやり方よりも、本来の機能を優先的に使う方が理解しやすいと思います。

    トピック投稿者 nekokonnichiha

    (@nekokonnichiha)

    ありがとうございます!

    1.プラグインの設定よりarchiveをtrueにする
    2.ページスラッグとカスタム投稿タイプ名を一緒にしないように設定する
    3.ページで条件分岐する

    という方法で正常にページナビも動くようになりました。
    ですのでこの質問は解決済みにさせていただきます。

    ただ、はじめはarchive-カスタム投稿タイプ名.php とファイルを用意する方法で
    勧めていたのですが、それが上手く起動せず諦めてこのような形になっています。
    (途中、ページスラッグとカスタム投稿タイプ名が一緒の場合、archive-カスタム投稿タイプ名.phpが動いたような…?でも時間の関係で検証できていません。)

    引き続き、きちんと理解できるようにご紹介いただいたリンク先などで、勉強していきたいと思います。

    ご丁寧に回答して下さり、ありがとうございます!
    本当に助かりましたし、勉強になりました!

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「カスタムフィールドを使用したカテゴリのアーカイブページを作成するに」には新たに返信することはできません。