我无法访问我的WP (version3.4.2) admin。上面写着
致命错误:无法重新分配自动全局变量_POST在/home/xxx/public_html/wp-content/themes/rtthemes16/rt-framework/classes/admin.php的第540行。
第540行是:
function rt_check_sidebar_array($_POST){
if(is_array($_POST)){
$start_unset_count = 0;
foreach($_POST as $key => $value){
if(stristr($key, '_sidebar_name') == TRUE && $value=="") {
unset($_POST[$key]);
$start_unset_count = 1;
}
if($start_unset_count>0){
unset($_POST[$key]);
$start_unset_count++;
}
if($start_unset_count==6){
$start_unset_count = 0;
}
}
}
$newPost == $newPost ? $newPost : $_POST;
return $_POST;
}
见解吗?谢谢:)
从PHP 5.4开始,不能使用超全局变量作为函数的参数
$_POST是全局访问的。所以你不需要传递给你的函数
http://php.net/manual/en/language.variables.superglobals.php # 112184
你的函数应该是这样的
function rt_check_sidebar_array(){
if(is_array($_POST)){
$start_unset_count = 0;
foreach($_POST as $key => $value){
if(stristr($key, '_sidebar_name') == TRUE && $value=="") {
unset($_POST[$key]);
$start_unset_count = 1;
}
if($start_unset_count>0){
unset($_POST[$key]);
$start_unset_count++;
}
if($start_unset_count==6){
$start_unset_count = 0;
}
}
}
$newPost == $newPost ? $newPost : $_POST;
return $_POST;
}
@user3450716,正如Abhik Chakraborty所说,你唯一需要做的就是从你的函数rt_check_sidebar
参数中删除$_POST
,并让函数没有参数,像这样:
你的第540行:
function rt_check_sidebar_array($_POST){
改为:
function rt_check_sidebar_array(){
@user3450716。你也不能改变超全局变量,所以你不能使用unset($_POST[$key])
function rt_check_sidebar_array(){
$post = $_POST;
if(is_array($post)){
$start_unset_count = 0;
foreach( $post as $key => $value ){
if( stristr( $key, '_sidebar_name' ) == TRUE && $value == "" ) {
unset( $post[ $key ] );
$start_unset_count = 1;
}
if( $start_unset_count > 0 ){
unset( $post[ $key ] );
$start_unset_count++;
}
if( $start_unset_count == 6 ){
$start_unset_count = 0;
}
}
}
// idk why you wrote this,
// because $newPost variable isn't used in the code above and below
$newPost == $newPost ? $newPost : $post;
return $post;
}