きみいて。

* indexへ戻るリンクの冒険
  • 最終更新日--2020/11/18 13:42
  • wordpressで2ページ目以降が表示できない。

    wordpressライフでの困ったことの覚書です。
    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年から生き残っています。まつだ。