2025年1月17日星期五

解决WordPress Uncaught Error: Call to undefined function create_function()

原文链接:https://www.chenweiliang.com/cwl-32407.html


你是不是也被WordPress错误信息“Uncaught Error: Call to undefined function create_function() in SNIPPET:62”搞得头疼?


这个问题其实不难解决,我们现在就来详细聊聊为什么会出现这个问题,以及如何用简单有效的代码解决它。


为什么会出现create_function错误?


先来点背景知识。在PHP 7.2中,create_function()就已经被废弃,而到了PHP 8.0,这个函数直接被移除。也就是说,如果你的服务器已经升级到PHP 7.2以上版本,仍然在使用旧代码,就会导致这个问题。


但问题的核心是:create_function是一个旧时代的产物。它的问题不仅在于不再被支持,还会带来性能低下和潜在的安全风险。新的解决方案是使用匿名函数(Anonymous Functions)。


修改代码:解决create_function报错


解决WordPress Uncaught Error: Call to undefined function create_function()


现在,我们来看看如何替换旧代码。以下是具体的代码修改方案:


原始代码


//彻底禁止WordPress缩略图
add_filter( 'add_image_size', create_function( '', 'return 1;' ) );

//自定义登录页面的LOGO链接为首页链接
add_filter('login_headerurl', create_function(false,"return get_bloginfo('url');"));

修改后的代码


// 彻底禁止 WordPress 缩略图
add_filter( 'add_image_size', function() return 1; );

// 自定义登录页面的 LOGO 链接为首页链接
add_filter( 'login_headerurl', function() return get_bloginfo('url'); );

代码解释



  • function() return 1; 是一个匿名函数,不需要参数并返回 1

  • get_bloginfo('url') 是返回网站主页地址的函数,我们同样用匿名函数包装它。


更好的做法:谨慎对待缩略图的禁用


彻底禁用WordPress缩略图有时并不是最佳选择。如果某些主题或插件需要特定大小的图片,完全禁用可能会带来意想不到的问题。


这里有一个更灵活的解决方案:通过过滤器有选择性地禁用不必要的图片大小。


示例代码


add_filter( 'intermediate_image_sizes_advanced', function( $sizes ) 
unset( $sizes['thumbnail'] ); // 禁用缩略图
unset( $sizes['medium'] ); // 禁用中等大小
unset( $sizes['large'] ); // 禁用大图
return $sizes;
);

这种方式不仅解决了问题,还能保持对某些功能的兼容性。


修改代码的位置


将修改后的代码添加到以下位置之一:



  1. 当前主题的 functions.php 文件。

  2. 自定义功能插件(推荐方式,避免主题更新覆盖代码)。


额外提示:确保代码兼容性


在修改代码前,建议先备份网站文件和数据库。你可以使用插件(如UpdraftPlus)快速完成备份,避免出错时措手不及。


同时,如果你对PHP不熟悉,建议在测试环境中尝试修改代码,而非直接操作生产环境。


优化代码是一场持久战


这个问题看似简单,其实是网站开发中需要面对的普遍问题:旧代码与新环境的兼容性。无论是PHP版本的升级还是WordPress功能的改进,都是为了让网站运行得更高效、更安全。


对于开发者而言,及时更新代码、学习新技术是必不可少的。匿名函数不仅能让代码更简洁,还能提升性能,减少潜在的安全风险。每一次优化,都是让你的网站更进一步。


总结



  1. create_function() 在PHP 7.2及以上版本中不再支持,推荐使用匿名函数代替。

  2. 修改代码后,你的网站将更加高效、安全。

  3. 为了更好地兼容插件和主题,有选择性地禁用图片大小可能是更好的方案。

  4. 优化代码不仅仅是修复问题,更是提升网站品质的一步。


如果你也遇到了类似问题,不妨试试本文的解决方案。





欢迎转载《解决WordPress Uncaught Error: Call to undefined function create_function()

欢迎分享本文链接:https://www.chenweiliang.com/cwl-32407.html


网站地址:https://www.chenweiliang.com/



欲获取更多资讯内幕和秘技,欢迎进入Telegram频道:https://www.chenweiliang.com/go/tgchannel

没有评论:

发表评论