Wordpressでアーカイブページのページ送りが表示できません。。
(404.phpに遷移します)
結構困っています。。助けてください。。
状況というか、分かることを列挙して説明いたしますと、
・Underscoreをカスタマイズ
・ページ数(1,2,3・・・10)は問題なく取得できているがリンク先が表示できない。
・プラグインFV Top Level Categoriesをインストール。
・パーマリンクは「/%category%/%postname%」。
・「http://example.com/column/category-slug/page/1/」と打ったら表示できるが2ページ目以降はダメ。
・テスト環境だと問題ないが、本番環境だと本症状になる。
//archive.php
<div id="primary" class="content-area">
<main id="main" class="site-main" role="main">
<?php
if ( have_posts() ) : ?>
<?php
$paged = get_query_var('paged');
// カテゴリーページの表示件数を変更するには、posts_per_pageの数字を変更
query_posts($query_string . '&posts_per_page=8&paged=' . $paged);
/* Start the Loop */
while ( have_posts() ) : the_post();
/*
* Include the Post-Format-specific template for the content.
* If you want to override this in a child theme, then include a file
* called content-___.php (where ___ is the Post Format name) and that will be used instead.
*/
get_template_part( 'template-parts/content', 'listunit' );
endwhile;
pagination();
else :
get_template_part( 'template-parts/content', 'none' );
endif;
wp_reset_query(); ?>
</main><!-- #main -->
</div><!-- #primary -->
//function.php
/*-------------------------------------------*/
/* Pasing
/*-------------------------------------------*/
function pagination($max_num_pages = '', $range = 1) {
$showitems = ($range * 2)+1;
global $paged;
if(empty($paged)) $paged = 1;
if($max_num_pages == '') {
global $wp_query;
// 最後のページ
$max_num_pages = $wp_query->max_num_pages;
if(!$max_num_pages) {
$max_num_pages = 1;
}
}
if(1 != $max_num_pages) {
echo '<div class="paging_wrap">'."\n";
echo '<ol class="paging">'."\n";
// Prevリンク
// 現在のページが2ページ目以降の場合
if ($paged > 1) echo '<li><a class="prev_link" href="'.get_pagenum_link($paged - 1).'">«</a></li>'."\n";
// 今のページからレンジを引いて2以上ある場合 && 最大表示アイテム数より最第ページ数が大きい場合
// (レンジ数のすぐ次の場合は表示する)
// 1...345
if ( $paged-$range >= 2 && $max_num_pages > $showitems ) echo '<li><a href="'.get_pagenum_link(1).'">1</a></li>'."\n";
// 今のページからレンジを引いて3以上ある場合 && 最大表示アイテム数より最第ページ数が大きい場合
if ( $paged-$range >= 3 && $max_num_pages > $showitems ) echo '<li><span class="txt_hellip">…</span></li>'."\n";
// レンジより前に追加する数
$addPrevCount = $paged+$range-$max_num_pages;
// レンジより後に追加する数
$addNextCount = -($paged-1-$range); // 今のページ数を遡ってカウントするために-1
// アイテムループ
for ($i=1; $i <= $max_num_pages; $i++) {
// 表示するアイテム
if ($paged == $i) {
$pageItem = '<li><span class="current">'.$i.'</span></li>'."\n";
} else {
$pageItem = '<li><a href="'.get_pagenum_link($i).'" class="inactive">'.$i.'</a></li>'."\n";
}
// 今のページからレンジを引いた数~今のページからレンジを足した数まで || 最大ページ数が最大表示アイテム数以下の場合
if ( ( $paged-$range <= $i && $i<= $paged+$range ) || $max_num_pages <= $showitems ) {
echo $pageItem;
// 今のページからレンジを引くと負数になる場合 && 今のページ+レンジ+負数をレンジに加算した数まで
} else if ( $paged-1-$range < 0 && $paged+$range+$addNextCount >= $i ) {
echo $pageItem;
// 今のページからレンジを足すと 最後のページよりも大きくなる場合 && 今のページ+レンジ+負数をレンジに加算した数まで
} else if ( $paged+$range > $max_num_pages && $paged-$range-$addPrevCount <= $i ) {
echo $pageItem;
}
}
// 現在のページにレンジを足しても最後のページ数より2以上小さい時 && 最大表示アイテム数より最第ページ数が大きい場合
if ( $paged+$range <= $max_num_pages-2 && $max_num_pages > $showitems ) echo '<li><span class="txt_hellip">…</span></li>'."\n";
if ( $paged+$range <= $max_num_pages-1 && $max_num_pages > $showitems ) echo '<li><a href="'.get_pagenum_link($max_num_pages).'">'.$max_num_pages.'</a></li>'."\n";
// Nextリンク
if ($paged < $max_num_pages) echo '<li><a class="next_link" href="'.get_pagenum_link($paged + 1).'">»</a></li>'."\n";
echo "</ol>\n";
echo "</div>\n\n";
}
}
不足している情報があれば是非教えて下さい。
追記------------------------------------
single.php に記述している所属しているカテゴリーを表示するコードも原因不明で出力がされていない状況でした。
ご参考になればと思い追記しました。
ここはマルっとUnderscoreのコードを流用しています。
<p class="entry-category"><?php cseo_template_entry_footer(); ?></p>
↓
<p class="entry-category"></p>
if ( ! function_exists( 'cseo_template_entry_footer' ) ) :
/**
* Prints HTML with meta information for the categories, tags and comments.
*/
function cseo_template_entry_footer() {
// Hide category and tag text for pages.
if ( 'post' === get_post_type() ) {
/* translators: used between list items, there is a space after the comma */
$categories_list = get_the_category_list( esc_html__( ', ', 'cseo_template' ) );
if ( $categories_list && cseo_template_categorized_blog() ) {
printf( '<span class="cat-links">' . esc_html__( '%1$s', 'cseo_template' ) . '</span>', $categories_list ); // WPCS: XSS OK.
}
/* translators: used between list items, there is a space after the comma */
// $tags_list = get_the_tag_list( '', esc_html__( ', ', 'cseo_template' ) );
// if ( $tags_list ) {
// printf( '<span class="tags-links">' . esc_html__( 'Tagged %1$s', 'cseo_template' ) . '</span>', $tags_list ); // WPCS: XSS OK.
// }
}
if ( ! is_single() && ! post_password_required() && ( comments_open() || get_comments_number() ) ) {
echo '<span class="comments-link">';
/* translators: %s: post title */
comments_popup_link( sprintf( wp_kses( __( 'Leave a Comment<span class="screen-reader-text"> on %s</span>', 'cseo_template' ), array( 'span' => array( 'class' => array() ) ) ), get_the_title() ) );
echo '</span>';
}
edit_post_link(
sprintf(
/* translators: %s: Name of current post */
esc_html__( 'Edit %s', 'cseo_template' ),
the_title( '<span class="screen-reader-text">"', '"</span>', false )
),
'<span class="edit-link">',
'</span>'
);
}
endif;
/**
* Returns true if a blog has more than 1 category.
*
* @return bool
*/
function cseo_template_categorized_blog() {
if ( false === ( $all_the_cool_cats = get_transient( 'cseo_template_categories' ) ) ) {
// Create an array of all the categories that are attached to posts.
$all_the_cool_cats = get_categories( array(
'fields' => 'ids',
'hide_empty' => 1,
// We only need to know if there is more than one category.
'number' => 2,
) );
// Count the number of categories that are attached to the posts.
$all_the_cool_cats = count( $all_the_cool_cats );
set_transient( 'cseo_template_categories', $all_the_cool_cats );
}
if ( $all_the_cool_cats > 1 ) {
// This blog has more than 1 category so cseo_template_categorized_blog should return true.
return true;
} else {
// This blog has only 1 category so cseo_template_categorized_blog should return false.
return false;
}
}
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
0
query_posts
は最近あまり使われない関数です。理由はページングなどへの弊害があるためです。
ページごとの記事数は下記のコードを functions.php に追記すればカテゴリーページにおいて8件の表示に出来ると思います。一度置き換えてみて、それでもページングに問題がある場合はまた詳細を追記ください。
function cat_posts_on_homepage( $query ) {
if ( $query->is_category() && $query->is_main_query() ) {
$query->set( 'posts_per_page', '8' );
}
}
add_action( 'pre_get_posts', 'cat_posts_on_homepage' );
【テンプレートタグ/query posts - WordPress Codex 日本語版】
https://wpdocs.osdn.jp/テンプレートタグ/query_posts#.E8.AA.AC.E6.98.8E
【もうquery_postsは呼ばない:WordPress私的マニュアル】
http://elearn.jp/wpman/column/c20110927_01.html
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.23%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
kei344
2016/08/03 12:06
例示用ドメインはご自身で所有されていない限りexample.comを利用してください。
cotton88
2016/08/03 12:09
承知しました。
cotton88
2016/08/03 12:09
ご指摘ありがとうございます。
asahina_dev
2016/08/03 12:13
https://teratail.com/questions/34492 にある対応( /page/2 が表示されない ) の回答の方法はどうでしょう?
cotton88
2016/08/03 20:15
asahina_dev様
ありがとうございます。
ご教授して頂いた回答の中でいうと、
http://naoyu.net/wordpress/wp-pagenavi-404error/648/
の「WP-PageNavi」を使用して対処してみる、という事でしょうか?
asahina_dev
2016/08/03 20:43
そのあとの方ですね
cotton88
2016/08/03 20:47
「2ページ目(以降)が404 ページがありません と出てしまう」という、カスタム投稿タイプを用いてスラッグを重複させない、という所でしょうか?
asahina_dev
2016/08/03 21:00
私は多分そのあたりの関連なんじゃないのかなぁと思ってますが。
cotton88
2016/08/03 21:03
ありがとうございます。現在はpostで投稿していて、カスタム投稿タイプを使う理由はありませんが、プラグインを用いてテストしてみたいと思います。