[WordPress] have_comments()がFALSEを返しコメントが表示されない現象
スポンサーリンク
WordPressを改造中にコメントが表示されなくなる現象が発生しました。ものすごく単純なミスによるものなのですが、原因を調べるために少し時間を無駄にしてしまいました。ほとんどの人はやらかさないミスだと思うのですが、何かの役に立つこともあるかと思い記録しておきます。
具体的に言うと、記事にコメントがあるかどうかを返すhave_comments()
が、コメントがあるにも関わらずFALSE
を返してくるために、コメントが表示されなくなるという現象が発生しました。
だいたいのテーマでコメントの表示部分は以下のようなコードになっていると思います。
<?php if(have_comments()):?> <h3>コメント</h3> <?php wp_list_comments(); ?> <?php endif;?>
1行目でコメントがあるかどうかを確認し、あるなら3行目のwp_list_comments()
で各コメントを表示するわけです。
この時、1行目のhave_comments()
がTRUE
でなければ2~3行目は実行されないのですが、have_comments()
がFALSE
を返してくるようになってしまったわけです。
理由は単純なミスで、コメントの表示を行う前の段階で$post
という変数をうっかり使ってしまっていたからでした。
WordPressは個別記事を表示する際、データを$postに代入し、各所でグローバル変数として使います。コメントを表示する場合も同じで、have_comments()
においても$post
に別な値が代入されてしまっていては、コメントの有無を判定できなくなり、FALSE
ばかりが返ってくることになるというわけです。
ということで、$post
に別な値を代入する処理を行っていた箇所を修正し、無事コメントが表示されるようになりました。
まあ、コメントが表示されなくなる現象への対応というより、WordPressにおいて、$post
という変数名を本来の目的以外で使うなという原則の話ですね。
スポンサーリンク
WordPressカテゴリーの投稿
- [WordPress] 記事が更新された回数を取得する
- [WordPress] ダッシュボードのウィジェットを表示オプションを使わずに非表示化する
- [WordPress] 関連記事をカテゴリーに基づきアイキャッチ画像つきで表示
- [WordPress] バックアッププラグインの特徴と機能比較
- [WordPress] タグ版wp_list_categories
- [WordPress] 個別記事ページでカテゴリーを表示するときの目的別の方法
- [PHP] 文字長がnバイト以下になるまで末尾の文字を1字づつカット
- [WordPress] wp_insert_post()でhtmlタグが除去されるのを防ぐ
- [WordPress] カテゴリー・タグ・カスタムタクソノミーを外部から登録・編集する
- [WordPress] カスタムフィールドで一つのキーに複数の値を保存