きみいて。
最終更新日--2020/11/28 16:08
wordpressで2ページ目以降が表示できない。
wordpressで途中でパーマリンクの設定を基本から、投稿名に変更したところページネーション、いわゆる次のページへいけなくなっていまいました。
私の場合は、アーカイブページのページネーションは404にならず、topページindex.phpだけページネーションで2ページ目以降にいけませんでした。
パーマリンク設定を基本以外にすると、2ページ目のurlは、https://kimiita.org/page/2となり表示できなくなり、再度パーマリンク設定を基本に戻すと、https://kimiita.org/paged=2となりページネーションが正常に動作します。
調べたところ、パーマリンクの設定を変更すると/paged=2から/page/2に移動したとよとリダイレクトしているようです。お前ずっとそこに居るんや本当は。幸子騙されちゃいかん!
ということで、/page/2へリダイレクトさせないように以下のように設定しました。
なにかあると大変なので、必ず子テーマで作業します。ない人は子テーマの作り方を検索して必ず作ってね。
以下を子テーマのfunctions.phpにコピペします。場所はphp選手宣誓されている以降ならお好きな場所に。
//functions.phpに以下を記述。リダイレクトさせない。
add_filter('redirect_canonical','my_disable_redirect_canonical');
function my_disable_redirect_canonical( $redirect_url ) {
if ( is_archive() ){
$subject = $redirect_url;
$pattern = '/\/page\//'; // URLに「/page/」があるかチェック
preg_match($pattern, $subject, $matches);
if ($matches){
//リクエストURLに「/page/」があれば、リダイレクトしない。
$redirect_url = false;
return $redirect_url;
}
}
}
index.phpにあるページネーションの記述はテーマによって違います。私の使用テーマはfirstでした。
<?php endwhile; ?>
<?php
the_posts_pagination( array(
'prev_text' => __( '« Previous', 'first' ),
'next_text' => __( 'Next »', 'first' ),
) );
?>
上記に以下の2行を足しました。要約すると本当はここにいるから戻って来いよ。
<?php endwhile; // ?>
//index.phpのページネーションbaseとformatを足す。
<?php
the_posts_pagination( array(
'prev_text' => __( '« Previous', 'first' ),
'next_text' => __( 'Next »', 'first' ),
'base' => get_pagenum_link(1) . '%_%',
'format' => '?paged=%#%',
) );
?>
以上青山テルマでした。
このサイトは2001年から生き残っています。まつだ。