Intereting Posts
Есть ли способ удалить или скрыть отдельные страницы на экране «Редактировать страницы»? Удалить сообщение без трафика? Как получить файл WordPress для загрузки Boostrap's CSS? Аргумент post_type не работает корректно с WP_Query is_archive () не работает над выбранной «страницей сообщений», Как отправить электронную почту с помощью wp_mail () с сообщения электронной почты, полученного из контактной формы, вместо хоста? Импорт MariaDB в Mysql в WordPress Chrome Version 44.0.2403.89 m пытается заставить HTTPS доступ к бэкэнд на каждый пользовательский статус Текст, указывающий доменное имя, появляется на каждой странице … Как избавиться от него Группировка CPT и таксономии в группы меню в admin Ограничить пользовательский гусеничный ход только передним концом Как отменить регистрацию боковой панели для template_part? Как изменить всю панель администратора WordPress Look and Feel? Добавить другой мета-код, основанный на таксономии

Получение предупреждения «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 : он не позволит мне добавить комментарий к вопросу из-за того, что я тратил очки своей репутации