PHP:替换这个 create_function
PHP: Replace this create_function
我从互联网上粘贴的旧 php 脚本不再受支持。 create_function 不再有效,我想更换它。但是我无法找到现代解决方案。我的 PHP 技能太差了,甚至无法理解它过去是如何工作的。有谁知道快速修复?我将不胜感激!
//Gets post cat slug and looks for single-[cat slug].php and applies it
add_filter('single_template', create_function(
'$the_template',
'foreach( (array) get_the_category() as $cat ) {
if ( file_exists(TEMPLATEPATH . "/single-{$cat->slug}.php") )
return TEMPLATEPATH . "/single-{$cat->slug}.php"; }
return $the_template;' )
);
这种转换其实极其简单因为涉及的字符串是常量(注意单引号)。所以,除了它的参数之外,没有任何东西进出函数。
这意味着你拥有的是一个正常的、普通的功能。
所以:
$newFunction = function($the_template) {
foreach((array)get_the_category() as $cat) {
if (file_exists(TEMPLATEPATH . "/single-{$cat->slug}.php")) {
return TEMPLATEPATH . "/single-{$cat->slug}.php";
}
}
return $the_template;
};
add_filter('single_template', $newFunction);
我认为这也应该有效(只有很小的变化):
$newFunction = function($theTemplate) {
foreach(get_the_category() as $cat) {
$php = TEMPLATEPATH . "/single-{$cat->slug}.php";
if (file_exists($php)) {
return $php;
}
}
return $theTemplate;
};
更新
您甚至不需要声明函数,但可以使用 anonymous 函数:注意匿名主体只是旧 create_function
的第二个参数, 而第一个参数指定了匿名参数。
add_filter(
'single_template',
function($theTemplate) {
foreach(get_the_category() as $cat) {
$php = TEMPLATEPATH . "/single-{$cat->slug}.php";
if (file_exists($php)) {
return $php;
}
return $theTemplate;
}
);
我从互联网上粘贴的旧 php 脚本不再受支持。 create_function 不再有效,我想更换它。但是我无法找到现代解决方案。我的 PHP 技能太差了,甚至无法理解它过去是如何工作的。有谁知道快速修复?我将不胜感激!
//Gets post cat slug and looks for single-[cat slug].php and applies it
add_filter('single_template', create_function(
'$the_template',
'foreach( (array) get_the_category() as $cat ) {
if ( file_exists(TEMPLATEPATH . "/single-{$cat->slug}.php") )
return TEMPLATEPATH . "/single-{$cat->slug}.php"; }
return $the_template;' )
);
这种转换其实极其简单因为涉及的字符串是常量(注意单引号)。所以,除了它的参数之外,没有任何东西进出函数。
这意味着你拥有的是一个正常的、普通的功能。
所以:
$newFunction = function($the_template) {
foreach((array)get_the_category() as $cat) {
if (file_exists(TEMPLATEPATH . "/single-{$cat->slug}.php")) {
return TEMPLATEPATH . "/single-{$cat->slug}.php";
}
}
return $the_template;
};
add_filter('single_template', $newFunction);
我认为这也应该有效(只有很小的变化):
$newFunction = function($theTemplate) {
foreach(get_the_category() as $cat) {
$php = TEMPLATEPATH . "/single-{$cat->slug}.php";
if (file_exists($php)) {
return $php;
}
}
return $theTemplate;
};
更新
您甚至不需要声明函数,但可以使用 anonymous 函数:注意匿名主体只是旧 create_function
的第二个参数, 而第一个参数指定了匿名参数。
add_filter(
'single_template',
function($theTemplate) {
foreach(get_the_category() as $cat) {
$php = TEMPLATEPATH . "/single-{$cat->slug}.php";
if (file_exists($php)) {
return $php;
}
return $theTemplate;
}
);