【備忘録】WordPressコメントを新しいもの順にしたら1ページ目の件数がおかしくなるときの対処 ~Simplicityテーマ編~
コメント欄を掲示板的に使えないか?ということで
の記事のように何とかできそうな予感がしてきました。そしてテストサイトにてルンルン気分でコメントをガンガンして表示してたら「いっぱいあるときはページ分割した方がいいなぁ」となりました。
そしてページ分割してみたら・・・あれ??1ページ目が何だか変!!ってなったんです。
例えばディスカッション設定で5件を1ページに表示するとして、5の倍数の場合は全く気付かないのですが、6件のコメントがあった場合には1ページ目が1件のコメント、2ページ目が5件のコメントになるんです。なんでだろーーーー??
ディスカッション設定でいろいろ変更してみたけどどうやらここの設定ではない、という結論に達しいろいろ調べていたらこの設定は全く関係ないのでは??に達しました。
要は最新のもの順にしても作られるページページはそのままで、ページ番号だけが入れ替わる・・・というのがWordPressのコメント一覧の動作のようです。だから、5件/ページで6件のコメントがあって新しいもの順にすると5件のページと1件のページが作られて、それが新しいものから1ページにする・・・となるため1ページ目が1件のコメントになってしまうんですね、多分。
そこで何とか1ページ目が5件表示にならないか?ということでやってみたら今回紹介する方法で解決できましたので備忘録を兼ねて紹介しておこうと思います。
・・・と偉そうに記事にしてますけど、私はコード知識に乏しい人間ですし、あくまでもいろいろなサイトに掲載されている対処方法を参考に試行錯誤したらたまたまできた結果なのでコードについての解説や質問をいただいても回答できませんのであしからず・・・。
コメントの1ページ目がおかしくなるのを改善する方法
【Simplicity】テーマの場合、コメントに関する詳細なコードは「comments-default.php」に書かれているのでそれを開いて編集します。
コードの中に
<?php wp_list_comments('avatar_size=55'); //コメント一覧を表示 ?>
【注意】コードをコピーして使用する前に必ずお読みください
この記事内にコードが記載されている場合、コードはそのままコピー(いわゆるコピペ)してお使いいただいても構いませんが、以下の件にご留意ください。
使用については自己責任でお願いします
コードの確認は私の管理するサイト、またはテスト環境で問題が起こらなかったものですので、お使いの環境での動作等を保証するものではありません。
万が一このコードを使用してサイトに重篤なトラブルが生じても当サイト、当サイト管理者は一切責任を負いません
コードの変換エラーなどにより動作しない場合、更新エラーが出る場合があります
コードをそのままコピーしても問題なく使えるよう文字列変換を行った上で掲載しておりますが、希に変換できていない場合があり、コードエラーとなることがあります
その場合には以下の方法で修正を行ってみてください
- コードの中に全角の記号が入っていませんか? 半角にすることで解消できます
- コードの中に全角の空白(スペース)がありませんか? 半角にすることで解決できます
- コードは合っているはずなのに更新できないときは 特にエラーの出た行内に日本語での文字列が入っている場合には全角での文字列があるということでエラーになる場合があり、WordPressのエディタチェックではこれを「'」や「)」など閉じ子のエラーとして認識され更新できないことがあります。エラーとして返される行の先頭に空白がある場合には空白をなくすことできちんと認識され更新されるようになることが多いです。
- 「何かが間違っています...」と表示され、更新できないときは このエラーは本当に何がエラーなのかをWordPressのチェックが判断できない場合に発生します。解決策としてはその画面を開き直すことなのですが、その際希に元のコードがすべて削除されてしまう場合がありますので、今表示されているコードを一旦どこかへコピーしてからページの再読み込みをするようにしてやり直します。
※このエラーは不明なエラーなので予期せぬ動きをする可能性がありますので特に慎重な対処が必要です
コードを転載する場合には
ご自身のサイトで当ページで紹介しているコードを転載される場合には当ページへのリンクを入れていただきますようお願いいたします
という部分があるので以下のコードに置き換えます(comments-default.phpをバックアップしておく、子テーマにコピーしてそこで修正など元に戻せるようにしておいてくださいね)。
<?php
$comments = get_comments( array(
'status' => 'approve'
, 'post_id' => $post->ID
) );
?>
<?php wp_list_comments( array (
'per_page' => $comments_per_page,
'reverse_top_level' => false
), $comments ); ?>
【注意】コードをコピーして使用する前に必ずお読みください
この記事内にコードが記載されている場合、コードはそのままコピー(いわゆるコピペ)してお使いいただいても構いませんが、以下の件にご留意ください。
使用については自己責任でお願いします
コードの確認は私の管理するサイト、またはテスト環境で問題が起こらなかったものですので、お使いの環境での動作等を保証するものではありません。
万が一このコードを使用してサイトに重篤なトラブルが生じても当サイト、当サイト管理者は一切責任を負いません
コードの変換エラーなどにより動作しない場合、更新エラーが出る場合があります
コードをそのままコピーしても問題なく使えるよう文字列変換を行った上で掲載しておりますが、希に変換できていない場合があり、コードエラーとなることがあります
その場合には以下の方法で修正を行ってみてください
- コードの中に全角の記号が入っていませんか? 半角にすることで解消できます
- コードの中に全角の空白(スペース)がありませんか? 半角にすることで解決できます
- コードは合っているはずなのに更新できないときは 特にエラーの出た行内に日本語での文字列が入っている場合には全角での文字列があるということでエラーになる場合があり、WordPressのエディタチェックではこれを「'」や「)」など閉じ子のエラーとして認識され更新できないことがあります。エラーとして返される行の先頭に空白がある場合には空白をなくすことできちんと認識され更新されるようになることが多いです。
- 「何かが間違っています...」と表示され、更新できないときは このエラーは本当に何がエラーなのかをWordPressのチェックが判断できない場合に発生します。解決策としてはその画面を開き直すことなのですが、その際希に元のコードがすべて削除されてしまう場合がありますので、今表示されているコードを一旦どこかへコピーしてからページの再読み込みをするようにしてやり直します。
※このエラーは不明なエラーなので予期せぬ動きをする可能性がありますので特に慎重な対処が必要です
コードを転載する場合には
ご自身のサイトで当ページで紹介しているコードを転載される場合には当ページへのリンクを入れていただきますようお願いいたします
自分なりな解釈ですけど上のコード側では「アバターのサイズのみ指定するけど一覧をとにかく表示してちょーだい、詳細条件はWordPressの標準動作に従いまっせ!」というコード。
一方下のコードは「とりあえずその投稿に対する全部のコメントを抽出してチョーだい」としておいて、「コメントのリストを表示しなっせ」としてるんですね、きっと多分・・・。
まあget_commentsとwp_list_commentsの意味がそうだから間違いないでしょう・・・。
そしてこの件でいろいろごちゃごちゃ設定変更してたら、WordPressの設定にある「〇〇のコメントを各ページのトップに表示する」というのはページ送りしたときの〇ページ内の話であるようです(日本語ムズカシイデス)。知ってますよね、皆さんはきっと・・・。
なので、特に設定変更の必要がないと判断し、上のコード上で
'reverse_top_level' => false
【注意】コードをコピーして使用する前に必ずお読みください
この記事内にコードが記載されている場合、コードはそのままコピー(いわゆるコピペ)してお使いいただいても構いませんが、以下の件にご留意ください。
使用については自己責任でお願いします
コードの確認は私の管理するサイト、またはテスト環境で問題が起こらなかったものですので、お使いの環境での動作等を保証するものではありません。
万が一このコードを使用してサイトに重篤なトラブルが生じても当サイト、当サイト管理者は一切責任を負いません
コードの変換エラーなどにより動作しない場合、更新エラーが出る場合があります
コードをそのままコピーしても問題なく使えるよう文字列変換を行った上で掲載しておりますが、希に変換できていない場合があり、コードエラーとなることがあります
その場合には以下の方法で修正を行ってみてください
- コードの中に全角の記号が入っていませんか? 半角にすることで解消できます
- コードの中に全角の空白(スペース)がありませんか? 半角にすることで解決できます
- コードは合っているはずなのに更新できないときは 特にエラーの出た行内に日本語での文字列が入っている場合には全角での文字列があるということでエラーになる場合があり、WordPressのエディタチェックではこれを「'」や「)」など閉じ子のエラーとして認識され更新できないことがあります。エラーとして返される行の先頭に空白がある場合には空白をなくすことできちんと認識され更新されるようになることが多いです。
- 「何かが間違っています...」と表示され、更新できないときは このエラーは本当に何がエラーなのかをWordPressのチェックが判断できない場合に発生します。解決策としてはその画面を開き直すことなのですが、その際希に元のコードがすべて削除されてしまう場合がありますので、今表示されているコードを一旦どこかへコピーしてからページの再読み込みをするようにしてやり直します。
※このエラーは不明なエラーなので予期せぬ動きをする可能性がありますので特に慎重な対処が必要です
コードを転載する場合には
ご自身のサイトで当ページで紹介しているコードを転載される場合には当ページへのリンクを入れていただきますようお願いいたします
としてページ内でも新しい順に絶対なるようにしました。
これでひとまず
- コメントを最新のものから順番に表示する
- ディスカッション設定で設定した件数でページを分割する
- 1ページ目の件数がおかしくなるのを改善する
- ページ内のコメントは必ず新しい順にする
ことができました。今回は使用中の【Simplicity】テーマでの話でしたが、他のテーマでも同じ現象が出てたらこの方法で解決できるかもしれません。
ただこの件はこれで解決としましたがもう1つ問題が発生!それは、コメントを投稿するとコメントの一覧は最終ページ(この場合は一番古いコメント)が表示されてしまうんです。この問題についてはまた研究して解決したらまた紹介したいと思います。
WordPressのカスタマイズ・不具合対応などご相談ください
Wordpressのカスタマイズ、不具合解消のご相談はすべてココナラのダイレクトメッセージからお受けしております。まずはこちらのバナーからお気軽にお問い合わせください。
【スポンサーリンク】