状況
テーマの編集をしているときに、<?php the_content(); ?>のかわりに、<?php the_excerpt(); ?>を使用したら、使用した部分から下が表示されない。ローカルのphp8環境。
ざっくり調べると、<?php the_excerpt(); ?>で不具合が出るのは日本語の文字数の判定がうまくいかないから、解決策に「wp multibyte patch」を使うと良いという情報があったので、逆に「wp multibyte patch」を停止して表示できるようになった。
調査
自分のローカルの開発環境
- php8
- WordPress 5.8.3
- 症状:ページが以降欠ける
wp-config.php のデバッグモードを true にした様子
Fatal error: Uncaught TypeError: call_user_func_array(): Argument #1 ($callback) must be a valid callback, function “new_excerpt_mblength” not found or invalid function name in /Applications/XAMPP/xamppfiles/htdocs/xxx/wp-includes/class-wp-hook.php:303 Stack trace: #0 /Applications/XAMPP/xamppfiles/htdocs/xxx/wp-includes/plugin.php(189): WP_Hook->apply_filters(110, Array) #1 /Applications/XAMPP/xamppfiles/htdocs/xxx/wp-content/plugins/wp-multibyte-patch/wp-multibyte-patch.php(266): apply_filters(‘excerpt_mblengt…’, 110) #2 /Applications/XAMPP/xamppfiles/htdocs/xxx/wp-includes/class-wp-hook.php(303): multibyte_patch->excerpt_mblength(110) #3 /Applications/XAMPP/xamppfiles/htdocs/xxx/wp-includes/plugin.php(189): WP_Hook->apply_filters(110, Array) #4 /Applications/XAMPP/xamppfiles/htdocs/xxx/wp-includes/formatting.php(3841): apply_filters(‘excerpt_length’, 110) #5 /Applications/XAMPP/xamppfiles/htdocs/xxx/wp-includes/class-wp-hook.php(303): wp_trim_excerpt(‘<p>php\xEF\xBC\x98wordpr…’, Object(WP_Post)) #6 /Applications/XAMPP/xamppfiles/htdocs/xxx/wp-includes/plugin.php(189): WP_Hook->apply_filters(”, Array) #7 /Applications/XAMPP/xamppfiles/htdocs/xxx/wp-includes/post-template.php(429): apply_filters(‘get_the_excerpt’, ”, Object(WP_Post)) #8 /Applications/XAMPP/xamppfiles/htdocs/xxx/wp-includes/post-template.php(394): get_the_excerpt() #9 /Applications/XAMPP/xamppfiles/htdocs/xxx/wp-content/themes/dekirukana/index.php(17): the_excerpt() #10 /Applications/XAMPP/xamppfiles/htdocs/xxx/wp-includes/template-loader.php(106): include(‘/Applications/X…’) #11 /Applications/XAMPP/xamppfiles/htdocs/xxx/wp-blog-header.php(19): require_once(‘/Applications/X…’) #12 /Applications/XAMPP/xamppfiles/htdocs/xxx/index.php(17): require(‘/Applications/X…’) #13 {main} thrown in /Applications/XAMPP/xamppfiles/htdocs/xxx/wp-includes/class-wp-hook.php on line 303
公開環境
- php7.4
- WordPress 5.8.3
- 症状:対象部分が表示されない […] だけだ。ループの記事タイトルや、フッターは表示できている。
対策
「wp multibyte patch」を停止
以前から運営しているサイトでは、使用している可能性の高いプラグイン。自分もお世話になっています。
100万以上にインストールされているようだ。
<?php the_excerpt(); ?>を使う人がいないのかな。