You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级PHP 8.1后WordPress出现stripos()弃用错误,求解决方案

解决WordPress升级PHP 8.1后stripos()弃用错误

问题原因

PHP 8.1开始严格要求stripos()函数的第一个参数($haystack)必须是字符串类型,当前wp_add_inline_style函数未对传入的$data参数做非空校验,当$data为null时就会触发该弃用警告。

解决办法

方法1:升级WordPress到最新版本

WordPress官方已在后续版本修复了这类PHP 8.x兼容性问题,直接升级到最新稳定版是最稳妥的方案,既能解决该错误,也能同步获得安全补丁与功能更新。

方法2:临时修改函数代码(不推荐长期使用)

若暂时无法升级WordPress,可修改/public_html/wp-includes/functions.wp-styles.php中的wp_add_inline_style函数,在调用stripos前添加对$data的非空处理:

function wp_add_inline_style( $handle, $data ) {
    _wp_scripts_maybe_doing_it_wrong( __FUNCTION__, $handle );

    // 新增:将null转为空字符串,避免stripos参数类型错误
    if ( is_null( $data ) ) {
        $data = '';
    }

    if ( false !== stripos( $data, '</style>' ) ) {
        _doing_it_wrong(
            __FUNCTION__,
            sprintf(
                /* translators: 1: <style>, 2: wp_add_inline_style() */
                __( 'Do not pass %1$s tags to %2$s.' ),
                '<code><style></code>',
                '<code>wp_add_inline_style()</code>'
            ),
            '3.7.0'
        );
        $data = trim( preg_replace( '#<style[^>]*>(.*)</style>#is', '$1', $data ) );
    }

    return wp_styles()->add_inline_style( $handle, $data );
}

方法3:排查主题/插件的违规调用

该错误也可能由主题或插件调用wp_add_inline_style时传入null值导致,可通过以下步骤定位问题:

  • 临时切换到WordPress默认主题(如Twenty Twenty-Four),若错误消失,说明是当前主题的问题,可联系主题开发者修复,或自行修改主题中调用wp_add_inline_style的代码,确保传入的$data为字符串类型。
  • 逐个禁用插件,找到引发错误的插件后,联系开发者修复或修改插件内的对应调用代码。

内容的提问来源于stack exchange,提问作者Sourav Pan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 03:35:29