サポート » 使い方全般 » スマホとPCで別々にコメントページ分割を設定したときの挙動

  • 解決済 mintmind

    (@mintmind)


    タイトル長すぎると消えてしまうんですね。
    元タイトル:コメントのページ分割をスマホとPCで別々に設定したときのコメント投稿時の挙動

    コメントのページ分割の設定をディスカッションの設定画面からできますが、それだけだとスマホとPCとで別々に設定することができないので、以下のようにテーマ内テンプレートで分岐させています。

    if (is_mobile()) {
        $per_page = 20; //スマホ用ページ毎コメント数
        return $per_page;
      } else {
        $per_page = 50; //PC用ページ毎コメント数
        return $per_page;
      }
      wp_list_comments( array( 'per_page' => $per_page, 'callback' => 'mytheme_comment' ) );

    ですが、こうすると表示は上手くいくのですが、コメント投稿時の挙動に問題が発生してしまいます。
    ディスカッションの設定画面でのページ毎コメント数を20に設定していて、コメントが20件以上ある場合、スマホからコメント投稿すると、ちゃんとpermalink/comment-page-2/#comment-***へと飛びます。
    しかし、PCからだと50件以上のコメントがないにも関わらず、コメント投稿時には2ページ目へと飛ばされてしまいます。

    当然ではあるのですが、この部分をそれぞれスマホとPCで調節するにはどうすれば良いのでしょうか?

    apply_filters( 'comments_per_page', $per_page, $comment_status );

    こういったフィルターもあるようなのですが、これは管理画面のコメント一覧の表示数にしか反映されないようです。
    $comment_statusの部分を何かに変えれば、いけそうな気もしてるのですが、それが何かは分からないでいます。

    どなたか解決方法をご存知でしたらぜひお教えください。
    よろしくお願いします。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • 解決方法は知らないのですが、コメント投稿後はget_comment_link()が返すリンクへリダイレクトされます。そのときper_pageを50に変えていないのが原因でしょう。Wordpressコアのwp-comment-post.phpの末尾がその処理です。もしかするとcomment_post_redirectフィルターで対処できるかも。

    情報ありがとうございます。
    preg_replaceでcomment-page-*を各設定時の最終ページの数字に置換してcomment_post_redirectフィルターでいけました。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「スマホとPCで別々にコメントページ分割を設定したときの挙動」には新たに返信することはできません。