Получение предупреждения «Warning: call_user_func_array ()» всякий раз, когда я устанавливаю / обновляю плагин

Это началось после того, как я переместил установку wordpress с общего хостинга на vps.

Полная ошибка:

Предупреждение: call_user_func_array () ожидает, что параметр 1 будет действительным обратным вызовом, массив должен иметь ровно два члена в /home/pcsteps/public_html/wp-includes/plugin.php в строке 199

Я получаю его только при установке или обновлении плагина. Это никак не влияет на функцию плагина.

Линией, упомянутой в файле plugin.php, является следующее:

195 do { 196 foreach( (array) current($wp_filter[$tag]) as $the_ ) 197 if ( !is_null($the_['function']) ){ 198 $args[1] = $value; 199 $value = call_user_func_array($the_['function'], array_slice($args, 1, (int) $the_['accepted_args'])); 200 } 201 202 } while ( next($wp_filter[$tag]) !== false ); 

Я смотрел далеко и широко в Интернете, но не смог найти решение.

Любая помощь приветствуется 🙂

Solutions Collecting From Web of "Получение предупреждения «Warning: call_user_func_array ()» всякий раз, когда я устанавливаю / обновляю плагин"

Это сложно. Вам действительно не нужно смотреть на wp-includes / plugin.php, нет ничего плохого в этом файле, это основной файл, поэтому вы должны просто оставить его в покое, как и все другие файлы ядра.

Причина в том, что это сложно, потому что действия и фильтры в ядре ожидают рабочей функции обратного вызова, но когда вы add_filter или add_filter он никогда не проверяет обратный вызов. Фактически, он никогда не проверяет его при выполнении do_action и apply_filters , но вместо этого он передает его прямо в call_user_func_array .

Таким образом, всякий раз, когда вы видите эту ошибку (или это ошибки, не связанные с массивом), это просто означает, что некоторые темы или плагины делают что-то неправильно с add_action или add_filter :

 add_action( 'init', 'function_that_does_not_exist' ); add_action( 'init', array( 'Class_Name', 'method_that_does_not_exist' ) ); add_action( 'init', array( 'Non_Existent_Class', 'method' ) ); add_action( 'init', array( 'Class_Name', 'method', 'huh?' ) ); add_action( 'init', array( 'Just a bogus array' ) ); 

Ваша конкретная ошибка – это случай №4, который передает обратный вызов как массив, но имеет более 2 значений в массиве, и это то, о чем жалуется PHP. Это довольно распространенная ошибка в действиях, приоритетах и ​​аргументах WordPress:

 add_action( 'foo', array( $this, 'bar', 10, 2 ) ); 

Понимаете, это похоже на то, что мы привязаны к foo с помощью нашего метода bar в приоритете 10 с двумя аргументами. Но на самом деле мы передаем массив из четырех элементов в качестве функции обратного вызова. Это то, что мы на самом деле намеревались сделать:

 add_action( 'foo', array( $this, 'bar' ), 10, 2 ); 

Обратите внимание, как обратный вызов является 2-элементным массивом, а 20 и 2 являются третьим и четвертым аргументами add_action .

Надеюсь, что пролить свет на то, что происходит с вашими плагинами.

Я не уверен точно, что такое $the_['function'] , но вы получаете за это ошибку.

ожидает, что параметр 1 будет действительным обратным вызовом, массив должен иметь ровно два члена

Это говорит о том, что $the_['function'] не является действительным обратным вызовом, поскольку аргументация не является двумя членами. В самой ошибке указывается проблема.

Это может быть недостаточно для получения решения. Можете ли вы отобразить немного больше кода?

PS : он не позволит мне добавить комментарий к вопросу из-за того, что я тратил очки своей репутации