PHP 8的WordPress插件问题|未捕获错误:调用未定义的函数create_function()[duplicate]

lmyy7pcs  于 2023-05-05  发布在  PHP
关注(0)|答案(1)|浏览(175)

此问题已在此处有答案

PHP 7.2 Function create_function() is deprecated(6个回答)
59分钟前关闭
我使用Visual Lightbox的WordPress插件在我的网站上创建照片库。WordPress最近要求我更新到PHP 8,这导致了WordPress的错误。我已经联系了开发人员,但似乎他们不再提供对插件的支持。因此,我正在寻找帮助,弄清楚如何纠正代码,以符合PHP 8。
下面是admin.php页面的一个片段,其中存在不推荐使用的代码。

';
        } else {
            if (!current_user_can('edit_posts') && !current_user_can('edit_pages')) return;
            if (get_user_option('rich_editing') == 'true'){
                add_filter('mce_external_plugins', 'visuallightbox_tinymce_button');
                add_filter('mce_buttons', 'visuallightbox_tinymce_button');
                add_filter('admin_head', create_function('', 'visuallightbox_tinymce_button("admin_head");'));
            }
        }
    }
}

这里是错误。

WordPress has a built-in feature that detects when a plugin or theme causes a fatal error on your site, and notifies you with this automated email.

In this case, WordPress caught an error with one of your plugins, Visual LightBox.

When seeking help with this issue, you may be asked for some of the following information:
WordPress version 6.2
Active theme: Amadeus (version 2.1.4)
Current plugin: Visual LightBox (version 2.5.1)
PHP version 8.1.18


Error Details
=============
An error of type E_ERROR was caused in line 46 of the file /x/wp-content/plugins/visuallightbox/admin.php. Error message: Uncaught Error: Call to undefined function create_function() in /x/wp-content/plugins/visuallightbox/admin.php:46
Stack trace:
#0 /x/wp-includes/class-wp-hook.php(308): visuallightbox_tinymce_button()
#1 /x/wp-includes/class-wp-hook.php(332): WP_Hook->apply_filters()
#2 /x/wp-includes/plugin.php(517): WP_Hook->do_action()
#3 /x/wp-settings.php(623): do_action()
#4 /x/wp-config.php(60): require_once('/x/d...')
#5 /x/wp-load.php(50): require_once('/x/d...')
#6 /x/wp-admin/admin.php(34): require_once('/x/d...')
#7 /x/wp-admin/plugins.php(10): require_once('/x/d...')
#8 {main}
  thrown

我不是一个编码器。我有一个大致的想法,发生了什么,但不知道什么更新的代码可以用来使我的网站功能正常。
任何可以提供的帮助将不胜感激!
我无法恢复到PHP的早期版本,因为维护早期版本需要付费。
阅读了一些论坛,我确定这个问题在新版本的PHP中很常见,并且有一些编辑可以解决这个问题。我试图注解掉并替换这些违规代码,但我不是一个编码人员,对语法也不够熟悉,不能准确理解需要什么。

pw136qt2

pw136qt21#

create_function()从PHP 7.2.0开始被弃用,从PHP 8.0.0开始被删除。
您可以尝试使用anonymous function
删除以下行:

add_filter('admin_head', create_function('', 'visuallightbox_tinymce_button("admin_head");'));

将删除的行替换为以下内容:

add_filter('admin_head', function () { visuallightbox_tinymce_button("admin_head"); });

相关问题