首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Wordpress 6.x / PHP 8.x在开发环境中不推荐使用警告

Wordpress 6.x / PHP 8.x在开发环境中不推荐使用警告
EN

WordPress Development用户
提问于 2022-06-07 08:36:53
回答 2查看 2.7K关注 0票数 2

问题是:

我想在开发模式下使用PHP8.x运行Wordpress 6.x,意思是define('WP_DEBUG', true);,但是Wordpress 6.x 部分支持PHP8.x会抛出许多不推荐的警告,这会在屏幕上造成很大的混乱,同时也会导致cookie和REST的混乱。

php.iniwp-config.php中设置define('WP_DEBUG', true);并不能解决问题,因为Wordpress在设置开发通常需要的D5时会覆盖该设置。

解决方案不是直截了当的,我无法快速找到,无论是在Stack上还是在其他任何地方,所以下面我将回答我自己的问题,并为其他人解决问题。

EN

回答 2

WordPress Development用户

发布于 2022-08-19 14:19:29

更改wp-include/load.php中设置error_reporting的行,可能在第450行附近:

代码语言:javascript
运行
复制
if ( WP_DEBUG ) {
    error_reporting( E_ALL);

只需添加& ~E_DEPRECATED位,使其变为:

代码语言:javascript
运行
复制
if ( WP_DEBUG ) {
    error_reporting( E_ALL & ~E_DEPRECATED );

-他们为什么不把这样的东西放在配置文件中呢?在我(痛苦的)为wordpress编写插件和子主题的经历中,不可能使用调试模式,不是因为我的代码中有问题,而是因为在整个代码库中有几十个文件中的废弃代码。这使得WP_DEBUG毫无用处。不要让我知道默认情况下实现多环境支持是多么简单,我总是必须黑入wp-config.php文件(我假设其他人也是这样做的) :-(

票数 6
EN

WordPress Development用户

发布于 2022-06-07 08:36:53

解决方案的关键是enable_wp_debug_mode_checks过滤器,但是要使用它,您必须做一些特殊的事情。

正如文档所说:

此过滤器在插件可以使用之前运行。它是为非web运行时设计的。返回false将导致不检查WP_DEBUG和相关常量,除非您自己更新错误,否则将使用默认的PHP。要使用此筛选器,必须在加载$wp_filter之前定义WordPress全局,通常在wp-config.php中。

然后,当您禁用此默认错误报告覆盖-您可以设置自己的。最后的解决方案如下所示:

代码语言:javascript
运行
复制
define('WP_DEBUG', true);

if (WP_DEBUG) {
  define('WP_DEBUG_LOG', true);
  define('WP_DEBUG_DISPLAY', true);

  // disable friendly non informative error messages
  define('WP_DISABLE_FATAL_ERROR_HANDLER', true);

  $GLOBALS['wp_filter'] = [
    'enable_wp_debug_mode_checks' => [
      10 => [[
        'accepted_args' => 0,
        'function'      => function() { return false; },
      ]],
    ],
  ];
}

error_reporting(E_ALL & ~E_DEPRECATED & ~E_USER_DEPRECATED);

不幸的是,它也会自动关闭您自己的代码中的不推荐消息,但是在Wordpress解决其不推荐的代码片段之前,您可以做些什么。

票数 4
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/406490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档