Неустранимая ошибка: нельзя повторно назначить автоматически-глобальную переменную _POST
Я не могу получить доступ к моему WP (версии 3.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;
}
Любые идеи?
Спасибо:)
Ответы
Ответ 1
С 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;
}
Ответ 2
@user3450716, единственное, что вам нужно сделать, как сказал Абхик Чакраборти, - удалить $_POST
из параметров вашей функции rt_check_sidebar
и оставить функцию без параметров, например:
ваша строка 540:
function rt_check_sidebar_array($_POST){
измените его на:
function rt_check_sidebar_array(){
Ответ 3
@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;
}