検証環境

  • WordPress 5.5.1–ja
  • WordPress 6.0.2-ja (2022/10/07追記)
  • Chocolat 1.1.15 (WordPress用テーマ)
  • PHP 8.0(CGI) / PHP 7.4(CGI) (2022/10/07追記)
  • PHP8.3.2(モジュールモード) (2024/5/11確認)

症状①コメントが表示されない

コメントが表示されません
ダッシュボードで見るとコメントの記録はされているので、表示上の問題な様です

コメントの件数だけ表示が出ますが「1 件のトラックバック」という感じで、誤ってトラックバックとしてカウントされています

この症状で調べると、他のテーマでも同様の不具合が起きている様です
以下のURLでは、Mantraというテーマで問題が起き、修正により解決しています
Comments not appearing since upgrading to WordPress 5.5

これによると、Wordpress 5.5 からcomment_typeの値に変更があり、 ''(空文字) から 'comment' に変わった様です

症状①解決方法

/wordpress/wp-content/themes/chocolat/
にある
functions.php
ファイルの1か所を修正する

436行目の

if ( $comment->comment_type === '' ) {

if ( $comment->comment_type === '' || $comment->comment_type === 'comment' ) {

に変更するとコメントが出る様になりました(2020/9/18に変更)
この修正で前バージョン(WordPress 5.4含むそれ以前)も今後のバージョン(WordPress 5.5以降)も動きます
とりあえずこの設定でしばらく様子を見る事にします

WinMergeで比較

症状①参考Web

症状②PHP8.0でエラー

PHP7.4からPHP8.0に上げると「このサイトで重大なエラーが発生しました」と表示されて何も見れない
ダッシュボードすら見れないので焦るw
PHP7.4に戻せばまた表示されるが、PHPのサポート期間の問題があるためPHP8.0以降で動かしたい

どうやらPHP8.0になると「create_function」という関数が使えなくなる様です
無名関数に変更する必要があります

症状②解決方法

/wordpress/wp-content/themes/chocolat/
にある
functions.php
ファイルの3か所を修正する

2154行目の

add_action( 'widgets_init', create_function( '', 'return register_widget( "Chocolat_Widget_New_Entrys" );' ) );

add_action( 'widgets_init', function(){return register_widget( "Chocolat_Widget_New_Entrys" );});

に変更

2265行目の

add_action( 'widgets_init', create_function( '', 'return register_widget( "Chocolat_Widget_Category_Recent_Posts" );' ) );

add_action( 'widgets_init', function(){return register_widget( "Chocolat_Widget_Category_Recent_Posts" );});

に変更

2343行目の

add_action( 'widgets_init', create_function( '', 'return register_widget( "Chocolat_Widget_PageNavi" );' ) );

add_action( 'widgets_init', function(){return register_widget( "Chocolat_Widget_PageNavi" );});

に変更

この3か所の変更でPHP8.0でエラーが出なくなりました(2022/10/07に変更)
この修正で前バージョン(PHP7.4含むそれ以前)も今後のバージョン(PHP8.0以降)も動きます
とりあえずこの設定でしばらく様子を見る事にします

無名関数に変更する際のハマり

最初

create_function( ''…

な所を

function('')…

と書いて
Parse error: syntax error, unexpected '''' (T_CONSTANT_ENCAPSED_STRING), expecting variable (T_VARIABLE)
なエラー出てハマってました
create_function関数で引数が2つしかなく、第一引数が「''」だった場合は

function()…

が正解な様です

症状②参考Webページ