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

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

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

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

ページネーション

Webアプリケーションにおいて、1ページに収まらないコンテンツを、各ページへのリンクを並べてアクセスしやすくする手法をページネーションと呼びます。

Q&A

解決済

1回答

863閲覧

the_posts_paginationの実装の仕方

yuyauver98

総合スコア14

WordPress

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

ページネーション

Webアプリケーションにおいて、1ページに収まらないコンテンツを、各ページへのリンクを並べてアクセスしやすくする手法をページネーションと呼びます。

0グッド

0クリップ

投稿2017/11/13 13:23

編集2017/11/13 14:37

###前提・実現したいこと
Wordpressでthe_posts_paginationを使ってページネーションを実装したいです。
現状、全70件ほどの記事が全表示されているので、それを20件ずつにしたいです。
ずっとうまくいかず悩んでいるのでどなたか助けていただきたいです。。
###発生している問題・エラーメッセージ
the_posts_paginationは『基礎からのWordPress 改訂版』の記述の通り書いたんですが、表示すらされません、、、。
###該当のソースコード

<?php get_header(); ?> <?php if (have_posts()) : ?> <?php $allsearch =& new WP_Query("searchText=$s&showposts=-1"); $key = wp_specialchars($s, 1); $count = $allsearch->post_count; echo '<div class="flex-container"><h2 id="archiveSubTitle">「'.$key.'」に関する記事一覧:'.$count.'件</h2></div>'; ?> <div class="flex-container item-start"> <!-- ******************************************************************************************* * centerArea ******************************************************************************************* --> <section class="col-sm-12 sp-lg-8" id="centerAreaSection"> <ul> <?php while (have_posts()) : the_post(); ?> <li class="flex-fluid justify-start item-start thirdPostArea"> <a href="<?php the_permalink(); ?>"> <figure class="thirdPostIconArea"> <?php $img = get_field('postIcon'); $imgurl = wp_get_attachment_image_src($img, 'full'); ?> <img src="<?php echo $imgurl[0]; ?>" class="thirdPostIcon"> </figure> </a> <div class="thirdPostItem"> <a href="<?php the_permalink(); ?>"> <h3 class="thirdPostTitle"> <?php the_title(); ?> </h3> </a> <a href="<?php the_permalink(); ?>"> <div class="thirdPostSummary"> <div id="nospace"><?php echo get_the_content(); ?></div> </div> </a> </div> </li> <?php endwhile; endif; ?> </ul> <?php $args = array( 'prev_text' => '&laquo; NEXT', 'next_text' => 'PREV &raquo;', 'show_all' => false, 'mid_size' => 1, 'screen_reader_text' => 'ページナビゲーション', ); the_posts_pagination($args); ?> </section> <!-- ******************************************************************************************* * rightSidebar ******************************************************************************************* --> <section class="col-sm-12 sp-lg-4" id="rightSidebarSection"> <?php get_template_part("./template/mainSidebar"); ?> </section> </div> <?php get_footer(); ?>

###試したこと
管理画面でフロントページの表示を固定ページに、1ページに表示する最大投稿数は20にしています。記事は全部で70件ほどあります。フロントページはindex.phpです。~.jp/page/2とurlを変更しても1ページ目と同じ表示になります。

###補足情報(言語/FW/ツール等のバージョンなど)
WordPressのバージョンは4.8.3です。

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

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

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

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

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

kei344

2017/11/13 14:12

質問文のコードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。
yuyauver98

2017/11/13 14:35

ご指摘ありがとうございます!直します。
guest

回答1

0

ベストアンサー

本の意図がわかりませんが、固定ページではなく通常の「最新の投稿」にすればページングも問題なく出来ますよ。

書かれているコードは $allsearch に全件検索データを入れつつそれを使わず、通常のループ(固定ページ表示)を使用しているように見えます。全件出るとしたら別の箇所でフックでもしているのでしょうか。

「最新の投稿」に設定した上で、カテゴリを絞り込むなど特定の検索をしたい場合はpre_get_postsフックで処理するのが問題が起きにくいです。

【[Wordpress]pre_get_postsを使いこなす!pre_get_posts使い方まとめ | EMiAC-Works】
https://emiac-works.com/coding/pre-get-posts-code-snipet/

投稿2017/11/13 15:36

kei344

総合スコア69407

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

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

yuyauver98

2017/11/15 02:38

ご指摘通り、最新の投稿に設定し直したところ、index.phpが呼び出され、ページネーションが表示されました!他の方が書いたコードを解読しながら進めているので、とても難しく感じています。pre_get_posts勉強してみます!再度、質問することがあると思うので、その際はよろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問