サポート » テーマ » 記事でのコメント表示数を制限したい

  • 解決済 sysbird

    (@sysbird)


    コメントが10000件ついている記事があり(スパムではなく)、仕様としては最新の50件を表示すればよいのですが、記事を表示する際には常にすべてのコメントを取得するクエリが実行されサーバに負荷がかかっている状況です。サイト運営側は過去のコメントは削除したくないそうです。
    ディスカッション設定によりコメントを複数ページに分割表示できるものの、記事を表示するタイミングで取得するコメントはやはり全件となっているように見えます。

    暫定策としてコアコードのcomments_template()内のSQL文にLIMITを追加しました。
    テーマかプラグイン側でコメントの取得数を操作するような方法はありますでしょうか?

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • モデレーター jim912

    (@jim912)

    sysbirdさん、こんにちは。

    この場合だと、query フックでlimit句を追加する以外になさそうです。
    ただし、queryフックは、データベースへのSQL文が全て通る箇所なので、フックで渡されるSQL文を正規表現でチェックし、マッチした場合のみlimit句の追加をする必要があります。

    トピック投稿者 sysbird

    (@sysbird)

    jim912さん、ありがとうございます!
    queryというフックがあるのですね。
    正規表現は苦手ですけど、試してみます。

    トピック投稿者 sysbird

    (@sysbird)

    query フックでlimit句を追加することができました。
    ただしコメント取得のSQL文は3とおりがあります。並び順が固定の場合もあり、どうも思ったとおりにいかないようでした。コメントの取得に件数が制限できないのは、コメント階層を考慮してのことなんですね。単純にLIMITを付けるだけではダメなんだと気づきました。

    今回はコメント階層を使っていないということもあり、comments_template()のコピーを別名でfunction.phpに作成してカスタマイズしました。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「記事でのコメント表示数を制限したい」には新たに返信することはできません。