PHP升级致WordPress中create_function报错,请求代码转换协助
替代废弃的create_function兼容PHP新版本的写法
原代码依赖的create_function()函数在PHP 7.2及以上版本已被废弃,PHP 8.0+更是直接移除了这个函数,所以需要改成现代PHP支持的匿名函数写法,转换后的代码如下:
add_filter('single_post_template', function($the_template) { foreach( (array) get_the_category() as $cat ) { $template_path = get_template_directory() . "/single-{$cat->slug}.php"; if ( file_exists($template_path) ) { return $template_path; } } return $the_template; });
几个关键改动说明:
- 直接用PHP匿名函数(闭包)替换
create_function(),这是当前PHP官方推荐的回调写法,语法更直观,也避免了废弃函数的兼容性问题 - 将模板路径提取为单独变量
$template_path,让代码更易读和维护 - 把旧版WordPress常量
TEMPLATEPATH替换为get_template_directory()函数,这是WordPress官方更推荐的用法,兼容性更强 - 给
if语句补全了大括号,遵循代码规范,避免因缩进导致的逻辑错误
内容的提问来源于stack exchange,提问作者Brad Wickwire
相关产品推荐
相关产品推荐

