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

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

ただいまの
回答率

88.59%

wordpressの<!--nextpage-->を使ったページ分割で、2ページ目をクリックすると投稿TOPにリダイレクトされる。

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 968

musashidayo

score 38

現在

<?php
            wp_link_pages( array(
                'before'    => '<div class="pagebreak-links">',
                'after'     => '</div>',
                'pagelink'  => '<span class="page-number">%</span>',
            ) );
        ?>


このコードでページネーションを表示しているのですが、2ページ目をクリックしても投稿のTOPページにリダイレクトされてしまいます。
http://(ドメイン)/(投稿ページのスラッグ)/2 というアドレスでアクセスすると投稿のTOPページにリダイレクトされ、
http://(ドメイン)/(投稿ページのスラッグ)/page/2 ですと404になります。
最大投稿数を1にすると直ると書いてあるサイトがいくつかあったので、そちらは試しましたが、変わらずでした。

以下のサイトの状況と似ていたため、functionsに

add_filter('redirect_canonical','pif_disable_redirect_canonical');

function pif_disable_redirect_canonical($redirect_url) {
    if (is_singular()) $redirect_url = false;
return $redirect_url;
}


こちらのコードを追加したところ、2ページ目をクリックしてもしっかりと(http://(ドメイン)/(投稿ページのスラッグ)/2)のページが表示されましたが、the_contentの内容が1ページ目のままという不具合が発生しています。
https://monoxa.net/2015/07/wordpress%E3%81%A7single-php%E3%81%AB%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%8D%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E6%A9%9F%E8%83%BD%E3%82%92%E5%AE%9F%E8%A3%85/?doing_wp_cron=1543372740.1413979530334472656250

投稿を表示している部分のテンプレート

<?php get_header(); ?>
<main>
    <section>
        <?php while ( have_posts() ) : the_post(); ?>
            <?php
                global $my_single_post_title;
                global $my_single_post_ID;
                global $my_single_post_slug;
                global $my_single_post_url;

                $url = $_SERVER['REQUEST_URI'];
                $my_single_post_title = get_the_title();
                $my_single_post_ID    = get_the_ID();
                $my_single_post_slug  = get_post_field('post_name', $my_single_post_ID);
                $my_single_post_url = get_permalink();
            ?>
            <article>
                <?php
                    global $my_single_post_ID;
                    global $my_single_post_title;

                    $category = get_the_category();
                    $cat_id   = $category[0]->cat_ID;
                    $cat_name = $category[0]->cat_name;
                    $cat_slug = $category[0]->category_nicename;
                    $cat_url = get_category_link($cat_id);
                ?>
                <h1>
                    <?php echo $my_single_post_title; ?>
                </h1>
                <?php echo do_shortcode('[addtoany]'); ?>
                <div>
                    <?php the_content(); ?>
                    <?php
                        wp_link_pages( array(
                            'before'    => '<div class="pagebreak-links">',
                            'after'     => '</div>',
                            'pagelink'  => '<span class="page-number">%</span>',
                        ) );
                    ?>
                    <div>
                        <?php if(has_tag() == true) : ?>
                            <?php the_tags('<ul class="tags"><li>','</li><li>','</li></ul>'); ?>
                        <?php endif; ?>
                    </div>
                    <?php echo do_shortcode('[addtoany]'); ?>
                        <div>
                            <?php
                                if(get_field('オススメ投稿のスラッグ')){
                                    $my_posts = get_field('オススメ投稿のスラッグ');
                            ?>
                                    <ul>
                            <?php
                                    foreach($my_posts as $post){
                            ?>
                                        <li>
                                            <!--各投稿-->
                                        </li>
                            <?php
                                    }
                            ?>
                                    </ul>
                            <?php
                                }
                            ?>
                        </div>
                    <?php } ?>
                </div>
            </article>
        <?php endwhile; // end of the loop. ?>
    </section>
    <?php get_sidebar();?>
</main>
<?php get_footer(); ?>
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • kei344

    2018/12/02 02:35

    投稿を表示する部分のテンプレートはどのようになっていますか?

    キャンセル

  • musashidayo

    2018/12/03 10:44

    追記いたしました。よろしくお願いします。

    キャンセル

回答 1

checkベストアンサー

+1

  1. http://(ドメイン)/(投稿ページのスラッグ)?page=2 を試す
  2. http://(ドメイン)/(投稿ページのスラッグ)/?page=2 を試す
  3. デフォルトテーマで再現するか確認する
  4. プラグインを全て止めて再現するか確認する
  5. パーマリンク設定をデフォルトに戻す

このあたりを試してもらって、それでも出来ないならちょっとわかりません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/12/03 12:01

    回答有り難うございます!
    こちらの1.&2.のどちらともでしっかりと目的のページの内容が表示されましたが、wp_link_pages()のオプションにリンクをいじれる項目が見当たらないのでページネーションを自作する他ないでしょうか?

    キャンセル

  • 2018/12/03 12:04

    'echo=0'を渡して文字列として受け取り、置換するのが早いですね。

    【wp_link_pages – WordPress私的マニュアル】
    https://elearn.jp/wpman/function/wp_link_pages.html
    >echo 1 表示する場合は1、文字列として取得する場合は0

    キャンセル

  • 2018/12/03 12:34

    <?php
    $next_pages = wp_link_pages( array(
    'before' => '<div class="pagebreak-links">',
    'after' => '</div>',
    'pagelink' => '<span class="page-number">%</span>',
    'echo' => 0,
    ) );
    $next_pages = str_replace('/2/', '?page=2/', $next_pages);
    $next_pages = str_replace('/3/', '?page=3/', $next_pages);
    $next_pages = str_replace('/4/', '?page=4/', $next_pages);
    $next_pages = str_replace('/5/', '?page=5/', $next_pages);
    $next_pages = str_replace('/6/', '?page=6/', $next_pages);
    $next_pages = str_replace('/7/', '?page=7/', $next_pages);
    $next_pages = str_replace('/8/', '?page=8/', $next_pages);
    echo $next_pages;
    ?>
    そんな多くのページ分割するわけではないので、こちらを追記して求めていた機能が実装できました。
    ありがとうございました!

    キャンセル

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

  • ただいまの回答率 88.59%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • トップ
  • PHPに関する質問
  • wordpressの<!--nextpage-->を使ったページ分割で、2ページ目をクリックすると投稿TOPにリダイレクトされる。