我将Wordpress文件上传到运行php 5.2.7版的服务器后出现意外的T_FUNCTION php错误。
主题在localhost(使用MAMP)上工作正常,并且我自己的服务器上运行php版本5.3.10也没有错误。
可能出现什么问题或者可以采取哪些措施来解决此错误?
这是导致错误的行:
add_action('init', function() use($name, $args) {
整个functions.php文件如下所示:
<?php
/* Add Post Type */
function add_post_type($name, $args = array() ) {
if ( !isset($name) ) return;
$name = strtolower(str_replace(' ', '_', $name));
add_action('init', function() use($name, $args) {
$args = array_merge(
array(
'label' => 'Members ' . ucwords($name) . '',
'labels' => array('add_new_item' => "Add New $name"),
'singular_name' => $name,
'public' => true,
'supports' => array('title', 'editor', 'comments'),
),
$args
);
register_post_type( $name, $args);
});
}
add_post_type('Netherlands', array(
'supports' => array('title', 'editor', 'thumbnail', 'comments')
));
add_post_type('Belgium', array(
'supports' => array('title', 'editor', 'thumbnail', 'comments')
));
add_post_type('Germany', array(
'supports' => array('title', 'editor', 'thumbnail', 'comments')
));
add_post_type('France', array(
'supports' => array('title', 'editor', 'thumbnail', 'comments')
));
add_post_type('United-Kingdom', array(
'supports' => array('title', 'editor', 'thumbnail', 'comments')
));
add_post_type('Ireland', array(
'supports' => array('title', 'editor', 'thumbnail', 'comments')
));
add_post_type('Spain', array(
'supports' => array('title', 'editor', 'thumbnail', 'comments')
));
add_post_type('Portugal', array(
'supports' => array('title', 'editor', 'thumbnail', 'comments')
));
add_post_type('Italy', array(
'supports' => array('title', 'editor', 'thumbnail', 'comments')
));
我是php的新手,只能用于Wordpress主题。任何帮助都非常感谢。
答案 0 :(得分:7)
你不能在PHP中使用小于5.3的匿名函数
重新编写代码,使其不涉及匿名函数,它应该可以在旧服务器上运行。
答案 1 :(得分:1)
add_action()
的第二个参数属于callback类型。
Pre 5.3,这通常是表示函数的字符串:
add_action('init', 'myFunction');
function myFunction() { echo 'init'; }
在处理对象时,还有其他替代方法,例如create_function
和其他语法。
5.3以后,允许使用匿名函数:
add_action('init', function() { echo 'init'; });
答案 2 :(得分:-1)
PHP 5.3.0提供的匿名函数