[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という変数名を本来の目的以外で使うなという原則の話ですね。

スポンサーリンク


Comment