APIを使ったワードプレスサイトでページネーションが機能しないというトラブルが起きました。
APIからデータを取得するため、ワードプレスのページネーションを使う訳にはいかず、オリジナルでページネーションを用意する必要がありました。
それにより、トラブルが発生していました。
ちなみにページネーションとは、3ページ目を表示、5ページ目を表示と、ページを切り替える機能です。
原因は何なのか?

今回無事ページネーションが機能するようになったので、チャットGPTに原因はなんだったのか、聞いてみました。
◆チャットGPT先生の回答
現在のコードでは、ページ番号 (paged
) を $_GET['paged']
から取得しています。
しかし、パーマリンク設定を使用している場合、paged
はクエリパラメータとして渡されず、グローバルなクエリ変数として管理されます。
そのため、get_query_var('paged')
を使用してページ番号を取得する必要があります。
なるほど…。
どういうことなの…?(笑)
原因を分析

今回ページ番号の取得方法を修正したことで、ページネーションのトラブルが解決しました。
$current_page = isset( $_GET['paged'] ) ? intval( $_GET['paged'] ) : 1;
$current_page = max(1, $current_page );
問題があった時のコードでは上記のようにページ番号を取得していました。
PHPの$_GET
は、URLクエリパラメータを取得するものです。
例えば、example.com?page=3
のようなURLの場合、$_GET['page']
は 3
を返します。
$current_page = max(1, get_query_var('paged'), isset($_GET['paged']) ? intval($_GET['paged']) : 1);
これを上記コードのように修正しました。et_query_var('paged')
:は、WordPressのテンプレートタグで、現在のページ番号を取得します。
互換性のために $_GET['paged']
もチェックします。max(1, ...)
を使用して、ページ番号が1未満にならないようにします。
原因はパーマリンク

詳しくチャットGPT先生に聞いてみると、原因はパーマリンクでした。
URLには「クエリパラメータ」と「パーマリンク」があります。
簡単にいうとURLの記述形式が違います。
「クエリパラメータ」は機械向けの記述形式。
「パーマリンク」は人間向けの記述形式です。
ワードプレスでは「パーマリンク」が使われます。
それなのに「クエリパラメータ」の方法でページ番号を取得しようとしていたので、上手くいかなかったのでした。