• 解決済 heppoko

    (@heppoko)


    まず、ページの作り方についてはスルーしていただければ幸いです。
    たぶん、カスタム投稿なり、普通の投稿とカテゴリーで作るのが良いとは思うのですが、
    なぜかそうしなかったようで…

    カスタムタクソノミーで作った分類を設定した固定ページを一覧表示させるために「taxonomy-test.php」を作って一覧表示しました。
    ちなみに下記を使って表示。

    <?php
    	$myposts = get_posts('post_type=page&taxonomy=group&term=ranking&orderby=menu_order&order=ASC&posts_per_page=3');
    	foreach( $myposts as $post ) : setup_postdata($post);
    ?>
    	※表示させる内容
    <?php endforeach; ?>

    それに分類されたページが増えた時のためにページネーションを設定することになりました。
    そのページにはすでに、下記のソースを使ったものがあり、それをそのまま使えないかと思ってやってみたらだめでした。

    function my_paginate(){
    	global $wp_query, $paged;
    
    	$p_base = get_pagenum_link(1);
    	$p_format = 'page/%#%';
    
    	//?の有無確認、有る場合は場所を特定
    	if($word = strpos($p_base, '?')){
    	//?がある場合(検索結果)
    		$p_base = get_option(home).(substr(get_option(home), -1 ,1) === '/' ? '' : '/')
    			.'%_%'.substr($p_base, $word);
    	} else{
    	//?が無い場合(カテゴリ、タグ等)
    		$p_base .= (substr($p_base, -1 ,1) === '/' ? '' : '/') .'%_%';
    	}
    
     	echo paginate_links(array(
    		'base' => $p_base,
    		'format' => $p_format,
    		'total' => $wp_query->max_num_pages,
    		'current' => ($paged ? $paged : 1),
    	));
    }

    ページ送りを表示したいところに下記を記述。
    <?php my_paginate(); ?>

    現状、その固定ページは5つあります。
    そのため表示数を3にしてテストしたのですが、表示は3件なのに、
    ページネーションが5ページ分表示され、2ページ以降をクリックしても、
    1ページ目にある3件が表示されるだけ。

    もしかして固定ページが増えたらこの数字も増えるのかと思って、
    一つ追加したら、5ではなく6ページ分表示されるようになりました。

    ページ送りがちゃんとされておらず、しかも固定ページの数だけページ数が表示される状況にあります。
    上記のソースを触ることで解決できる手段はありませんでしょうか?
    昨日からずっと触っているのですがいっこうに解決できずにおります。
    ご教授いただければ幸いです。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • taxonomy-test.php で get_posts 使わないで、
    functions.phpで pre_get_posts 使うやり方に変えましょう
    http://wpdocs.sourceforge.jp/%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3_API/%E3%82%A2%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%95%E3%83%83%E3%82%AF%E4%B8%80%E8%A6%A7/pre_get_posts

    よくある質問ですが、 get_posts でのページ送りは基本できないと思ってください。
    なぜなら、get_posts 自体「サブループ」具体的に書くと、メイン記事(あるいは投稿一覧)とは別にサイドバーやフッターなどに何かしら記事(あるいはその一覧)を表示するときに使う関数だからです。

    トピック投稿者 heppoko

    (@heppoko)

    回答ありがとうございました。
    書かれてあった「pre_get_posts」でのやり方がどうしても分からず。

    視点を変えて、ページナビの動作確認が取れていたのが検索結果ページだったので、
    そこで使っていた「query_posts」で試したところ動いてくれました。
    調べていたら「query_posts」もページナビにはよろしくないとあった記憶があるのですが…。
    それにダメ元な感じでのやり方ではだめなんでしょうね、きっと。

    しかし「pre_get_posts」のことを調べていて、ここに何とか到達できました。
    ありがとうございました。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「タクソノミーを設定した固定ページの一覧ページでページ送りをつけたい」には新たに返信することはできません。