使用 Collapsing Archives 这个 WordPress 插件很多年了,就是本文右边能看到的历年存档,可以很漂亮折叠起来,而不是官方默认插件只能按年聚合,不能展开看有哪些文章
但是在 WordPress 升级到某个版本,及容器升级到 PHP8 后,只要开启这个插件,必然整个 WP 站都挂的,开 WordPress Debugging 看报错信息也没有头绪,没有可以联系作者的渠道,在 WordPress 论坛反馈也没反应
其中一个普遍的报错是
[error] 1088#1088: *266661 FastCGI sent in stderr: “PHP message: PHP Fatal error: Uncaught TypeError: call_user_func_array(): Argument #1 ($callback) must be a valid callback, class collapsArch does not have a method “enqueue_scripts” in /home/foo/www/blog/wp-includes/class-wp-hook.php:307
这个问题参考 https://wordpress.org/support/topic/an-error-occurred-11/#post-15472977 获得了解决,具体办法是到 ~/wp-content/plugins/collapsing-archives/
目录下修改 collapsArch.php
的 42 行,从
if (!is_admin()) { wp_enqueue_script('jquery'); add_action( 'wp_enqueue_scripts', array( 'collapsArch', 'enqueue_scripts' ) ); } else {
改为
if (!is_admin()) { wp_enqueue_script('jquery'); add_action( 'wp_head', array( 'collapsArch', 'get_head' ) ); } else {
但是问题依然没有解决,还有一处拼写错误需要修改,参考 https://wordpress.org/support/topic/great-until-php-8/#post-16349890 的办法,在 ~/wp-content/plugins/collapsing-archives/
目录下修改 defaults.php
的 27 行,从
'post_type' => 'post', 'taxoncmy' => 'category', 'postTitleLength' => '');
改为
'post_type' => 'post', 'taxonomy' => 'category', 'postTitleLength' => '');
至此,重新启用插件恢复正常