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

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

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

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

WordPress

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

PHP

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

Alternative PHP Cache (APC)

Alternative PHP Cache (APC)とは、PHPの実行コードのキャッシュ・最適化を行うための拡張モジュールです。オープンフリーソースで、PHP5.4までAPCをキャッシュすることができます。

Q&A

解決済

2回答

1509閲覧

ページ数を変えたいが2ページしか行かない

退会済みユーザー

退会済みユーザー

総合スコア0

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

WordPress

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

PHP

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

Alternative PHP Cache (APC)

Alternative PHP Cache (APC)とは、PHPの実行コードのキャッシュ・最適化を行うための拡張モジュールです。オープンフリーソースで、PHP5.4までAPCをキャッシュすることができます。

0グッド

0クリップ

投稿2020/09/13 10:40

編集2020/09/15 09:21

ページ送りはできたんですが、2ページまでしか、送ることができません。
function.phpが機能してないと思われます。
知識があまりなくて原因がわからないので回答よろしくお願いします。

php

1<div class="panel is-show"> 2 <?php 3 $paged = get_query_var('page') ? get_query_var('page') : 1 ; 4 $args = array( 5 'post_type' => 'post', 6 'category_name' => 'news,blog', 7 'posts_per_page' => 3, 8 'paged' => $paged 9 ); 10 $the_query = new WP_Query( $args ); 11 if ( $the_query->have_posts() ) : while ( $the_query->have_posts() ) : 12 $the_query->the_post(); ?> 13 <div class="left-post-date"> 14 <?php echo get_the_date(); ?> 15 </div> 16 <div class="left-post-item"> 17 <?php the_category(); ?> 18 </div> 19 <a href="<?php the_permalink(); ?>" class="left-post-title"> 20 <?php echo get_the_title(); ?></a> 21 <?php endwhile; ?> 22 <?php endif; ?> 23 <div class="nav-previous alignleft"> 24 <?php next_posts_link( '<img src="'. get_template_directory_uri().'/img/競技.png" />' ); ?></div> 25 <div class="nav-next alignright"><?php previous_posts_link( '<img src="'. get_template_directory_uri().'/img/競技-2.png" />' ); ?></div> 26 <?php wp_reset_postdata(); ?> 27 <?php // ページネーション ?> 28 <?php 29 if ( subPagination() ) { 30 echo subPagination(); 31 } 32 ?>

php

1function subPagination($end_size = 1, $mid_size = 2, $prev_next = true) { 2 global $the_query; 3 $page_format = paginate_links( 4 array( 5 'current' => max(1, get_query_var('page')), 6 'total' => $the_query->max_num_pages, 7 'type' => 'array', 8 'prev_text' => '前へ',//前へのリンク文言 9 'next_text' => '次へ',//次へのリンク文言 10 'end_size' => $end_size,//初期値:1 両端のページリンクの数 11 'mid_size' => $mid_size,//初期値:2 現在のページの両端にいくつページリンクを表示するか(現在のページは含まない) 12 'prev_next' => $prev_next,//初期値:true リストの中に「前へ」「次へ」のリンクを含むか 13 ) 14 ); 15 $code = ''; 16 if( is_array($page_format) ) { 17 $paged = get_query_var('page') == 0 ? 1 : get_query_var('page'); 18 $code .= '<div class="pagination">'.PHP_EOL; 19 $code .= '<ul>'.PHP_EOL; 20 foreach ( $page_format as $page ) { 21 $code .= '<li>'.$page.'</li>'.PHP_EOL; 22 } 23 $code .= '</ul>'.PHP_EOL; 24 $code .= '</div>'.PHP_EOL; 25 $code .= '<div class="pagination-total">'.$paged.'/'.$the_query->max_num_pages.'</div>'.PHP_EOL; 26 } 27 wp_reset_query(); 28 return $code; 29 }

試したこと
$the_query = new WP_Query($args);をfunction.phpから消すと、ページ数が出るようになりました。
ただ、最大表示数が4ページまでで、次はの文字を押してもページが送りができません。
ワードプレスの1ページの最大投稿数は10となってます。
3ページ目や、4ページ目を押すと下の画像が出てきます。
イメージ説明

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

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

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

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

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

CHERRY

2020/09/14 03:46

> $wp_query->max_num_pages; の出力は、何ページとなっているのでしょうか?
退会済みユーザー

退会済みユーザー

2020/09/14 05:14

そのコードは何も触ってないので初期のままです。
CHERRY

2020/09/14 10:48

聞き方が悪かったようです。 > $wp_query->max_num_pages; を、画面に表示すると何が表示されますか?
退会済みユーザー

退会済みユーザー

2020/09/15 08:12

サブループようのコードに書き換えたんですが、ページ数も出ず、ページ送りもできないようになりました。
退会済みユーザー

退会済みユーザー

2020/09/15 08:58

$the_query = new WP_Query($args);をfunction.phpから消すと、ページ数が出るようになりました。 ただ、最大表示数が4ページまでで、次はの文字を押してもページが送りができません。 ワードプレスの1ページの最大投稿数は10となってます。
guest

回答2

0

$wp_query->max_num_pages;

は、主にメインループの WP_Query で抽出された投稿数と1ページに表示する数で決まるので、

そのコードは何も触ってないので初期のままです。

ということはコメントは意味がありません。

たとえば、そのサイトに 100件の投稿があり、1ページに5件ずつ表示であれば、20 になります。また、100件の投稿で、1ページに10件表示であれば、 10 です。

サイトの投稿数や検索条件や設定によって変わる数字(ページ数)です。


また、表示部分では、

$the_query = new WP_Query( $args );

の様にサブクエリーを使われていますが、ページネーションの部分では、

global $wp_query; $pages = $wp_query->max_num_pages;

のようにメインクエリーの値を使われていますが、なぜでしょうか?

前半に記載したようにメインクエリとサブクエリで検索条件が異なるなどの理由で、検索された投稿数が異なり、ページ数が変わっているのではないでしょうか。
(たとえば、メインクエリでは 2 ページ。サブクエリでは、5 ページだったなど...)

サブクエリーを使うのであれば、ページネーションもサブクエリーに合わせる必要があります。

投稿2020/09/14 10:58

編集2020/09/14 11:00
CHERRY

総合スコア25171

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

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

0

ベストアンサー

「posts_per_pageの値」がWordPressの表示設定内の「1ページに表示する最大投稿数」よりも少なかったため、エラーが起きてました。
回答していただきありがとうございます。

投稿2020/09/15 09:29

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問