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

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

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

解決済

1回答

1159閲覧

カスタム投稿のアーカイブページ出力とpagerについて / wordpress

chachaH

総合スコア4

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

0クリップ

投稿2020/08/24 05:45

前提・実現したいこと

pagerの次のボタンをクリックすると、404でトップページに遷移してしまうので、
9件ずつで表示できる、カスタム投稿(shop01_news)のpager付きのアーカイブページの作成

発生している問題・エラーメッセージ

pagerの次のボタンをクリックすると、404でトップページに遷移してしまう。(aタグのURLはshop01/news/page/2となっている)

※最初は自作pagerを用いてましたが同様現象で、現在はプラグインを使用してpagerを表示させています。(プラグイン名:WP-PageNavi)
※/shop01/ 箇所は、その他shop02~04まで作成予定です。

現状のコード

functions.php

register_post_type( 'shop01_news', array( 'label' => 'NEWS', 'public' => true, 'supports' => array( 'title', 'editor', 'thumbnail', 'author'), 'menu_position' => 5, 'has_archive' => true, 'menu_icon' => 'dashicons-edit', 'rewrite' => array( 'slug' => '/shop01/news', 'with_front' => false ) ));

archive-shop01_news.php

$paged = get_query_var('paged')? get_query_var('paged') : 1; //pagedに渡す変数 $args = array( 'post_type' => 'shop01_news', 'posts_per_page' => 9, //posts_per_pageの指定 'paged' => $paged, //pagedの指定 ); $the_query = new WP_Query($args); if ($the_query->have_posts()) : while ($the_query->have_posts()) : $the_query->the_post(); ?> <a class="box fadeIn01" href="<?php the_permalink(); ?>"> <?php if(get_the_post_thumbnail( $id )): ?> <div class="img" style="background-image: url('<?php echo get_the_post_thumbnail_url( $id,'full' ); ?>')"></div> <?php else: ?> <div class="img" style="background-image: url('<?php bloginfo('template_url'); ?>/assets/img/noImg/shop01News.jpg')"></div> <?php endif; ?> <div class="text"> <span class="fonts_ENm"><?php echo get_the_date('y.m.d'); ?></span> <span class="fonts_JP02"><?php the_title(); ?></span> </div> </a> <?php endwhile; endif; //wp_pagenaviの記述 if(function_exists('wp_pagenavi')): wp_pagenavi(array('query'=>$the_query)); ////wp_pagenavi()の呼び出し(ただし、引数の指定が必要!) endif; wp_reset_postdata(); ?>

試したこと

・自作のpagerではなくプラグイン(WP-PageNavi)を使用
・カスタム投稿名の変更(shop01_newsではなく、shop01-newsやshop01newsなど)
・管理画面内でのパーマリンクの設定の変更(pager nextのaタグのURLはshop01/news/page/2となっているのでカスタム投稿記事と認識されたのかと考えたが解消されなかった)

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

解決できました。
自作ページャーに戻して、pagerのnext箇所のURLがpage/numになる箇所を?paged=numに変更しました。

<?php $paged = get_query_var('paged') ? get_query_var('paged') : 1 ; //ページの判定 $args = array( 'post_type' => 'shop01_news', 'posts_per_page' => 9, 'paged' => get_query_var('paged') ); $wp_query = new WP_Query($args); while ($wp_query->have_posts()) : $wp_query->the_post(); ?> <a class="box fadeIn01" href="<?php the_permalink(); ?>"> <?php if(get_the_post_thumbnail( $id )): ?> <div class="img" style="background-image: url('<?php echo get_the_post_thumbnail_url( $id,'full' ); ?>')"></div> <?php else: ?> <div class="img" style="background-image: url('<?php bloginfo('template_url'); ?>/assets/img/noImg/shop01News.jpg')"></div> <?php endif; ?> <div class="text"> <span class="fonts_ENm"><?php echo get_the_date('y.m.d'); ?></span> <span class="fonts_JP02"><?php the_title(); ?></span> </div> </a> <?php endwhile; ?> <div class="pagenation"> <?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('?paged=%#%/','paged');; $paginate_base .= '%_%'; } echo paginate_links(array( 'base' => $paginate_base, 'format' => $paginate_format, 'total' => $wp_query->max_num_pages, 'type' => 'list', //ul liで出力 'mid_size' => 1, //カレントページの前後 'end_size' => 0, 'current' => ($paged ? $paged : 1), 'prev_text' => 'PREV', 'next_text' => 'NEXT', )); ?> </div> <?php wp_reset_postdata(); ?>

投稿2020/08/24 08:02

chachaH

総合スコア4

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問