質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.99%

【Wordpressカスタム投稿】固定ページでカスタムタクソノミーの記事一覧ページのページ送りができない

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 4,683

horo

score 10

概要

現在Wordpressでカスタム投稿のカスタムタクソノミー(カテゴリー)の一覧ページを固定ページを使って作ろうとしていて、ページ送りが2ページ目になる(『サイト名/固定ページ名(カスタムタクソノミー名)/page/2』)と404エラーを吐き出してしまい、ページ送りができません。

どなたか助けてください…!(>0<;;)

ファイルの構成や設定について

ファイルの構成はこのようになっています。

■taxonomy-renovation_category.php(カスタムタクソノミー『リノベ種別』用)
■taxonomy-renovation_style.php(カスタムタクソノミー『スタイル種別』用)
(カスタム投稿のカスタムタクソノミーのアーカイブページ。
各タームの一覧は見られましたが、各カスタムタクソノミーごとの一覧は見れないため固定ページを代用しました)

■renovation_category.php(固定ページのカスタムテンプレート。一覧用に使う) 
■renovation_style.php(固定ページのカスタムテンプレート。一覧用に使う) 


プラグイン「Costom Post Type Ul」を使ってカスタム投稿タイプ『ギャラリー(gallery)』を作成し、
カテゴリーとして『リノベ種別(renovation_category)』『スタイル種別(renovation_style)』を指定しています。

パーマリンクは『サイト名/%post_id%』に設定しています。
カスタムフィールドは「Advanced Costom Field」を使っています。

固定ページ名はrenovation_categoryです。

ページナビはプラグインを使用していません。

カスタムテンプレートの内容は下記の通りです。
(WP_queryを使って呼び出しています)

<?php
/*
Template Name: 固定ページ用
*/
?>

<?php get_header(); ?>
<!--container-->
<div id="container">
     <!--contents-->
    <div class="contents">
        <article>

            <section>
            <div class="clearfix post">
                    <!--topicPath"-->
                    <div id="topicPath">
                        <div class="breadcrumbs" xmlns:v="http://rdf.data-vocabulary.org/#">
                        <?php if(function_exists('bcn_display'))
                        {
                            bcn_display();
                        }?>
                        </div>
                    </div>
                    <!--/topicPath"-->

                <h2><?php wp_title(""); ?></h2>

             <!-- loop -->
            <ul class="report_ul">
                    <?php
                        $paged = (int) get_query_var('paged');
                        $args = array(
                            'posts_per_page' => '2', //表示件数。-1なら全件表示
                            'post_type' => 'gallery', //カスタム投稿タイプの名称を入れる
                            'post_status' => 'publish', //取得するステータス。publishなら一般公開のもののみ
                            'orderby' => 'post_date', //日付順に並び替え
                            'order' => 'DESC',
                            'tax_query' => array(
                                    array(
                                        'taxonomy' => 'renovation_category',
                                        'field' => 'slug',
                                        'terms' => array( 'category_otherplace', 'category_puchi' ,'category_full'),
                                        ),
                                    ),
                            'paged' => $paged
                        );
                        $the_query = new WP_Query($args);
                        if ( $the_query->have_posts() ) :
                            while ( $the_query->have_posts() ) : $the_query->the_post();

                        ?>

                        <li>
                                <div class="category_tit <?php
                                        $term = array_pop(get_the_terms($post->ID, 'renovation_category'));
                                        $term_p = $term->parent;
                                        if ( ! $term_p == 0 ){
                                            $term = array_shift(get_the_terms($post->ID, 'renovation_category'));
                                        }
                                           echo esc_html($term->slug);
                                    ?>">
                                    <a href="<?php bloginfo('url'); ?>/renovation_category/<?php
                                        $term = array_pop(get_the_terms($post->ID, 'renovation_category'));
                                        $term_p = $term->parent;
                                        if ( ! $term_p == 0 ){
                                            $term = array_shift(get_the_terms($post->ID, 'renovation_category'));
                                        }
                                           echo esc_html($term->slug);
                                    ?>">
                                    <?php
                                        $term = array_pop(get_the_terms($post->ID, 'renovation_category'));
                                        $term_p = $term->parent;
                                        if ( ! $term_p == 0 ){
                                            $term = array_shift(get_the_terms($post->ID, 'renovation_category'));
                                        }
                                           echo esc_html($term->name);
                                    ?>
                                    </a>
                              </div>
                            <div class="box">
                                    <a href="<?php the_permalink(); ?>">
                                        <div class="inner">

                                                <figure>
                                                <div style="background-image:url(<?php $cftimg = wp_get_attachment_image_src(get_post_meta($post->ID, 'renovation_img', true), 'large'); echo $cftimg[0]; ?>)"></div>
                                                <figcaption class="title">続きを読む...</figcaption>
                                                </figure>
                                            </div>
                                        </a>
                            </div>

                            <div class="txt">
                                    <p class="txt_time"><?php the_time('Y年n月j日'); ?></p>
                                    <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>

                         </div>
                    </li> 

                        <?php endwhile; ?>
                        <?php else : ?>
            <!-- 投稿がなかった時 -->
            <?php endif; ?>
            <?php wp_reset_postdata(); ?>

            <!-- /loop-->
                    </ul>
            <!-- /loop-->

                <!--ページ送り-->
                <div class="pager">
                <?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' => $the_query->max_num_pages,
                    'mid_size' => 4,
                    'current' => max(1, $paged),
                    'prev_text' => '«',
                    'next_text' => '»',
                ));
                 ?>
            </div>
            <!--/ページ送り-->


                    <?php get_template_part('parts','btmcontents') ?>
            </div>
            </section>

        </article>
    </div>
    <!--/contents-->

</div>
<!--/container-->
<?php get_footer(); ?>

上記お力をお貸しいただけましたら幸いです。 
よろしくお願い致します。

発生している問題

2ページ目になる(『サイト名/固定ページ名(カスタムタクソノミー名)/page/2』)と404エラーを吐き出してしまい、ページ送りができません。

試したこと

  • https://gist.github.com/hissy/6103177の記述を使う
  • 『mux_num_pages』の記述を直してみる http://xtra-blog.net/pagination/
  • プラグイン「Custom Post Type UI」を使う
  • functions.phpを使って、/page/2の記述を消す…など
    (解決できず詰んでいます)

おそらくページ送りするとき、『サイト名/固定ページ名/page/2』の固定ページをwp側が探し見つからないため404を吐き出していると思われます。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

固定ページでカスタムタクソノミー一覧を作らずともデフォルトで一覧ページは出来ると思いますが、下記の様なURLでアクセスできませんか?(追記:できません)

http://example.com/renovation_category/

【カスタム投稿タイプの一覧ページの作成 | Web Design Leaves】
http://www.webdesignleaves.com/wp/wordpress/965/#h3_index_9

アクセス出来ない場合はCustom Post Type UIのカスタムタクソノミーの設定の、リライトをtrueにしてみてください。(追記:一覧で無くアーカイブのパスリライト設定です)

【Custom Post Type UIでカスタムタクソノミーを設定し編集する方法解説 | エス技研】
http://blog.s-giken.net/264.html


追記:

根本的に私が勘違いしていました。上記は正しくありません。

$paged = get_query_var('paged') ? get_query_var('paged') : 1 ;

【ページネーション(ページャー)が動かない!!wordPressの意外な落とし穴 | XTRA BLOG】
http://xtra-blog.net/pagination/

【次のページが表示されない!WordPressでページ送りができないときの原因と対処方法 | INSIDE YUKARI】
http://blog.yukarien.com/tech/how-to-fix-no-category-pagination/

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/08/08 12:12

    固定ページのスラッグを変更し、パーマリンク設定を何も変えず更新しましたが、カスタムタクソノミーの一覧ページでませんでした。

    キャンセル

  • 2016/08/08 14:36

    検証したところ、こちらの勘違いでした。お手間を取らせてしまい大変申し訳ありません。

    キャンセル

  • 2016/08/08 19:55

    教えていただきました
    $paged = get_query_var('paged') ? get_query_var('paged') : 1 ;

    を入れ、固定ページの名前を少し変更しましたら解決できました!

    助けていただき、誠にありがとうございます!!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.99%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる
  • トップ
  • PHPに関する質問
  • 【Wordpressカスタム投稿】固定ページでカスタムタクソノミーの記事一覧ページのページ送りができない