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

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

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

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

WordPress

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

ページネーション

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

Q&A

解決済

3回答

1406閲覧

Wordpressのページネーション問題

cancan

総合スコア5

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

WordPress

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

ページネーション

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

0グッド

0クリップ

投稿2020/04/11 14:31

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。

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

一般的なブログサイトをWordpressで作成しているのですが、front-page.phpでの記事一覧でのページネーション が上手く行きません。色々と調べて試してみたのですが上手くいかなくて困っています。 何でも良いので分かる方、お手数をお掛け致しますが教えていただきたいです。

該当のソースコード

wordpress

1// front-page.php 2<main id="main-contents"> 3 <?php 4$paged = (get_query_var('paged')) ? get_query_var('page') : 1; 5$query = new WP_Query(array( 6 'paged' => $paged, 7 'posts_per_page' => 8, 8 'post_type' => 'post', 9 'order' => 'DESC', 10 'orderby' => 'date', 11)); 12if ($query->have_posts()): 13 while ($query->have_posts()): 14 $query->the_post(); 15 ?> 16 <article class="post-link_item"> 17 <a href="<?php the_permalink();?>"> 18 <div class="post-thumb"><?php the_post_thumbnail('post-thumbnail', array('alt' => the_title_attribute('echo=0'), 'title' => the_title_attribute('echo=0')));?> 19 <span class="post-link_tag"> <?php 20  $tags = get_the_tags(); 21 if ($tags) { 22 foreach ($tags as $tag) { 23// タグ名の出力 24 echo $tag->name; 25 } 26 } 27 ?> 28 </span> 29 </div> 30 <div class="post-link_meta"> 31 <h3 class="post-link_title"><?php the_title();?></h3> 32 <time class="post-link_time" datetime="<?php the_time('Y-m-d');?>"><?php the_time(get_option('date_format'));?></time> 33 <?php the_excerpt();?> 34 </div></a></article> 35 <?php 36 endwhile; 37 wp_reset_postdata(); 38endif; 39?> 40<div class="pager"> 41 <?php 42$big = 999999999; 43echo paginate_links(array( 44 'base' => str_replace($big, '%#%', esc_url(get_pagenum_link($big))), 45 'current' => max(1, get_query_var('page')), 46 'total' => $query->max_num_pages, 47 'mid_size' => 1, 48 'end_size' => 1, 49 'prev_text' => '前', 50 'next_text' => '次', 51 'type' => 'plane', 52)); 53?> 54</div> 55 </main>

試したこと

front-page.phpなどの個別ページでページネーションさせるにはpagedをpageにすると調べてわかったので試したのですが、ページ繊維自体はしても記事が更新されない感じです。

補足情報(FW/ツールのバージョンなど)

front-page.phpは固定ページにしています。

ここにより詳細な情報を記載してください。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2020/04/13 14:33

$pagedに想定しているページ番号は入っていますか?
cancan

2020/04/14 00:29

回答有難う御座います。 すみません、$pagedに想定しているページ番号とはどの様なものでしょうか?
退会済みユーザー

退会済みユーザー

2020/04/14 01:19

たとえば、表示しているのが1ページ目であれば1、3ページ目であれば3です。
cancan

2020/04/14 07:24

有難う御座います。 1ページ目がpage/ 2ページ目がpage/2というurlになっています。 $pagedの記述は $paged = (get_query_var('page')) ? get_query_var('page') : 1; これしか書いてないです。
退会済みユーザー

退会済みユーザー

2020/04/14 08:04

URLではなく、$paged変数の中に入っている値は確認されましたか?
cancan

2020/04/14 08:49

<?php print_r($wp_query); ?>で変数の中身を確認したのですが 1ページ目が[paged] => 0 2ページ目が[paged] => 2になっていました。
guest

回答3

0

wp queryでページネーションを使用する場合は、ページネーションを呼び出した後にwp_reset_postdataを記述する必要があります。
endwhile以降の順番を入れ替えれば動くと思いますので試して見てください。

↓ここを上の文章通りに入れ替えてみて下さい。

php

1endwhile; 2wp_reset_postdata(); 3endif; 4?> 5<div class="pager"> 6 <?php 7$big = 999999999; 8echo paginate_links(array( 9 'base' => str_replace($big, '%#%', esc_url(get_pagenum_link($big))), 10 'current' => max(1, get_query_var('page')), 11 'total' => $query->max_num_pages, 12 'mid_size' => 1, 13 'end_size' => 1, 14 'prev_text' => '前', 15 'next_text' => '次', 16 'type' => 'plane', 17)); 18?>

投稿2020/04/14 09:29

tcg

総合スコア25

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

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

cancan

2020/04/14 09:46

ご回答有難う御座います。 ご回答通りに<?php wp_reset_postdata();?>をページネーション 呼び出し後に記述しましたが上手くいかなかったです。
tcg

2020/04/14 10:03

書き方はそれで合っているので、うまくいかないのであれば前提の部分ですね。 総ページ数を取得した値や現在のページの情報を渡す必要があるので。 currentとtotalのオプション指定が足りていないと思います。 frontページなら問題ないと思いますが、サブループで回す場合はその辺りを含めてテストしてみてください。
guest

0

ベストアンサー

そもそもの話なのですが、front-page.phpでわざわざ新しいクエリを取得している理由はなんでしょうか?

取得したいのが普通の投稿の記事一覧なのであれば、「表示設定」の「ホームページの表示」を「最新の投稿」にした上で、以下の様に書けばいいだけのはずです。

PHP

1if ( have_posts() ) : 2 while ( have_posts() ) : 3 the_post(); 4 5 ?><h1><?php the_title(); ?></h1><?php 6 ?><div><?php the_content(); ?></div><?php 7 8 endwhile; 9 10 echo paginate_links( $args ); 11endif;

今のようにしているのには、何か特別な理由があるのでしょうか。

投稿2020/04/14 09:14

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

cancan

2020/04/14 09:44

ご回答頂いた通りにしたらページネーションも一覧も問題なかったです。有難う御座います。 front-page.phpを固定ページ表示にしてパーツ化するのが良いと持っていたので、 サブループでクエリを取得して条件として回す場合は、どの様にすれば問題ないのでしょうか。 front-page.phpを固定ページにしてサブループでページ送りさせるのはあまり一般的ではないのでしょうか。
退会済みユーザー

退会済みユーザー

2020/04/14 09:57

申し訳ありませんが、おっしゃっている意味がわかりません。 「パーツ化する」とはどういう意味でしょうか。 「条件として回す」とはどういう意味でしょうか。 メインループとサブループのそれぞれで表示したいものは何ですか。 > front-page.phpを固定ページにしてサブループでページ送りさせるのはあまり一般的ではないのでしょうか。 上部にフロントに指定した固定ページの内容表示、下部に投稿の記事一覧をページネーションつきで表示したいということですか?
guest

0

たぶんこうかなぁ。

PHP

1// $paged = (get_query_var('paged')) ? get_query_var('page') : 1; 2// ↓ 3 $paged = (get_query_var('page' )) ? get_query_var('page') : 1; 4 $query = new WP_Query(array( 5 // 'paged' => $paged, 6 // ↓ 7 'page' => $paged, 8 'posts_per_page' => 8, 9 'post_type' => 'post', 10 'order' => 'DESC', 11 'orderby' => 'date', 12 ));

【関数リファレンス/WP Query - WordPress Codex 日本語版】
https://wpdocs.osdn.jp/関数リファレンス/WP_Query#ページ送りパラメータ

投稿2020/04/11 15:04

kei344

総合スコア69606

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

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

cancan

2020/04/11 15:14

ご回答有難う御座います。 ご回答頂いた通りに変更してみたのですが、上手くいかなかったです。 例えのサイトなのですが、このような感じで一般的なプログ記事一覧をfront-oage.phpに作りたいのですがページャーが上手く行きません、、、 https://haniwaman.com/
kei344

2020/04/11 15:25

それは残念。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問