Поддержка Проблемы и решения Warning: call_user_func_array()

  • Ошибка:Warning: call_user_func_array() expects parameter 1 to be a valid callback, no array or string given in ,,,,,,,,,,,,/wp-includes/class-wp-hook.php on line 286
    Определил вредителя: плагин «jQuery Vertical Mega Menu»
    вот строка с ошибкой

    // Register the widget
    add_action('widgets_init', create_function('', 'return register_widget("dc_jqverticalmegamenu_widget");'));

    что с ней не так и как исправить?

    Страница, с которой нужна помощь: [войдите, чтобы увидеть ссылку]

Просмотр 15 ответов — с 1 по 15 (всего 21)
  • Модератор Юрий

    (@yube)

    Вроде всё так. Правда create_function в php7.2 считается устаревшей, но вполне легальна, да и если с ней что-то не так, ругаться должна бы php, а не WP.

    Обновить это место можно так:

    // Register the widget
    add_action('widgets_init', function() {
    	register_widget("dc_jqverticalmegamenu_widget");
    });
    

    Поставил плагин у себя. Из ругани:

    Вызванный метод конструктора класса WP_Widget в dc_jqverticalmegamenu_widget считается устаревшим с версии 4.3.0! Используйте __construct().

    и несколько

    Non-static method dc_jqverticalmegamenu::***тут разные*** should not be called statically

    Warning: call_user_func_array() не вижу.

    может при помощи плагина «Query Monitor»как то можно найти причину ошибки Warning: call_user_func_array() ?он много информации дает вроде

    или может есть какой то плагин, который в режиме реального времени будет показывать на какой страничке сработал Warning: call_user_func_array()?

    Модератор Юрий

    (@yube)

    может при помощи плагина «Query Monitor»как то можно найти причину ошибки Warning: call_user_func_array() ?он много информации дает вроде

    Возможно, что-то можно увидеть табах PHP errors и Hooks & Actions.
    Я попробовал — он показал ерунду 🙂

    на какой страничке сработал Warning: call_user_func_array()?

    Это в лог должно писаться. В режиме реального времени.

    Модератор Юрий

    (@yube)

    он показал ерунду 🙂

    Ерунду звали Yoast SEO.
    Отключил.
    Монитор показал куда надо (более-менее)
    Мораль: SEO==ЗЛО :p

    mypowerlogo, Ваша идея использовать Query Monitor оказалось удачной. Респект!

    просмотрел: PHP errors и Hooks & Actions
    искал: add_action( и call_user_func_array(
    не нашел

    Модератор Юрий

    (@yube)

    не нашел

    Возможно, Вы смотрите не на той странице, где возникает ошибка. Существуют еще аяксные запросы и хроновые задачи, которые эти инструментом в принципе нельзя посмотреть.

    Если в лог ошибок не пишется страница, то можно в access.log попробовать найти запрос с тем же временем и тем же IP, что и в строке с ошибкой.

    Если в лог ошибок не пишется страница, то можно в access.log попробовать найти запрос с тем же временем и тем же IP, что и в строке с ошибкой.

    включил запись логов, логи пишутся раз в сутки. как появится файл с логами отпишусь

    • Ответ изменён 3 года, 1 месяц назад пользователем mypowerlogo.
    Модератор Юрий

    (@yube)

    логи пишутся раз в сутки.

    Странно это. Логи пишутся сразу. Раз в сутки обычно делается ротация логов: старый файл закрывается и архивируется, а новый открывается и пишется в него.

    включил запись логов, логи пишутся раз в сутки.

    Это какие-то не те логи.

    Попробуйте такой финт.
    В wp-config.php вместо строки define('WP_DEBUG', false); вставьте этот код:

    
    define( 'WP_DEBUG', true ); 
    if ( WP_DEBUG ) {
        define( 'WP_DEBUG_LOG', true );
        define( 'WP_DEBUG_DISPLAY', false);
    }

    Воспроизведите проблему.
    Логи ошибок должны писаться в /wp-content/debug.log.

    итак в файле debug.log появилось появились новые ошибки:
    например вот список ошибок за 1 секунду:

    [02-Nov-2018 15:33:32 UTC] PHP Notice:  wp_enqueue_style was called <strong>incorrectly</strong>. Scripts and styles should not be registered or enqueued until the <code>wp_enqueue_scripts</code>, <code>admin_enqueue_scripts</code>, or <code>login_enqueue_scripts</code> hooks. Please see <a href="https://codex.wordpress.org/Debugging_in_WordPress">Debugging in WordPress</a> for more information. (This message was added in version 3.3.0.) in ,,,,,/wp-includes/functions.php on line 4161
    [02-Nov-2018 15:33:32 UTC] PHP Notice:  wp_enqueue_script was called <strong>incorrectly</strong>. Scripts and styles should not be registered or enqueued until the <code>wp_enqueue_scripts</code>, <code>admin_enqueue_scripts</code>, or <code>login_enqueue_scripts</code> hooks. Please see <a href="https://codex.wordpress.org/Debugging_in_WordPress">Debugging in WordPress</a> for more information. (This message was added in version 3.3.0.) in ,,,,,/wp-includes/functions.php on line 4161
    [02-Nov-2018 15:33:32 UTC] PHP Deprecated:  Function create_function() is deprecated in ,,,,,,/wp-content/themes/giga-store/functions.php on line 326
    [02-Nov-2018 15:33:32 UTC] PHP Notice:  Вызванный метод конструктора класса WP_Widget в dc_jqverticalmegamenu_widget считается <strong>устаревшим</strong> с версии 4.3.0! Используйте <pre>__construct()</pre>. in ,,,,,,/wp-includes/functions.php on line 3916
    [02-Nov-2018 15:33:32 UTC] PHP Notice:  Вызванный метод конструктора класса WP_Widget в dc_jqverticalmegamenu_widget считается <strong>устаревшим</strong> с версии 4.3.0! Используйте <pre>__construct()</pre>. in ,,,,,,,/wp-includes/functions.php on line 3916
    [02-Nov-2018 15:33:32 UTC] PHP Deprecated:  Non-static method dc_jqverticalmegamenu::header() should not be called statically in ,,,,,,,,/wp-includes/class-wp-hook.php on line 286
    [02-Nov-2018 15:33:32 UTC] PHP Deprecated:  Non-static method dc_jqverticalmegamenu::get_plugin_directory() should not be called statically in ,,,,,,,,,,/wp-content/plugins/jquery-vertical-mega-menu/dcwp_jquery_vertical_mega_menu.php on line 30
    [02-Nov-2018 15:33:32 UTC] PHP Deprecated:  Non-static method dc_jqverticalmegamenu::get_plugin_directory() should not be called statically in ,,,,,,/wp-content/plugins/jquery-vertical-mega-menu/dcwp_jquery_vertical_mega_menu.php on line 34
    [02-Nov-2018 15:33:32 UTC] PHP Deprecated:  Non-static method dc_jqverticalmegamenu::get_plugin_directory() should not be called statically in ,,,,,,,,,,,,/wp-content/plugins/jquery-vertical-mega-menu/dcwp_jquery_vertical_mega_menu.php on line 35
    [02-Nov-2018 15:33:32 UTC] PHP Deprecated:  Non-static method dc_jqverticalmegamenu::get_plugin_directory() should not be called statically in ,,,,,,,,/wp-content/plugins/jquery-vertical-mega-menu/dcwp_jquery_vertical_mega_menu_widget.php on line 205
    [02-Nov-2018 15:33:32 UTC] PHP Warning:  call_user_func_array() expects parameter 1 to be a valid callback, no array or string given in ,,,,,,/wp-includes/class-wp-hook.php on line 286
    [02-Nov-2018 15:33:32 UTC] PHP Deprecated:  Non-static method dc_jqverticalmegamenu::footer() should not be called statically in ,,,,,,/wp-includes/class-wp-hook.php on line 286
    [02-Nov-2018 15:33:32 UTC] PHP Notice:  Функция get_product с версии 3.0 <strong>считается устаревшей</strong>! Используйте wc_get_product. in ,,,,,,,/wp-includes/functions.php on line 3853

    в файле functions.php всего 398 строк:
    326 add_filter( 'loop_shop_per_page', create_function( '$cols', 'return ' . absint( get_theme_mod( 'archive_number_products', 24 ) ) . ';' ), 20 );

    dcwp_jquery_vertical_mega_menu.php

    29	function header(){
    		echo "\n\t<link rel=\"stylesheet\" type=\"text/css\" href=\"".dc_jqverticalmegamenu::get_plugin_directory()."/css/dcverticalmegamenu.css\" media=\"screen\" />";
    		
    		// Scripts
    33			wp_enqueue_script( 'jquery' );
    34			wp_enqueue_script( 'jqueryhoverintent', dc_jqverticalmegamenu::get_plugin_directory() . '/js/jquery.hoverIntent.minified.js', array('jquery') );
    35			wp_enqueue_script( 'dcjqverticalmegamenu', dc_jqverticalmegamenu::get_plugin_directory() . '/js/jquery.dcverticalmegamenu.1.3.js', array('jquery') );
    			
    	}
    

    dcwp_jquery_vertical_mega_menu_widget.php

    204 if($skin != 'No-theme'){
    205						echo "\n\t<link rel=\"stylesheet\" href=\"".dc_jqverticalmegamenu::get_plugin_directory()."/skin.php?widget_id=".$key."&skin=".strtolower($skin)."\" type=\"text/css\" media=\"screen\"  />";
    206					}
    • Ответ изменён 3 года, 1 месяц назад пользователем mypowerlogo.
    • Ответ изменён 3 года, 1 месяц назад пользователем mypowerlogo.

    как их лечить?

    как их лечить?

    Удивляет Ваше упорство. Пытаться освежить экскременты мамонтов https://wordpress.org/plugins/jquery-vertical-mega-menu/ при наличии актуальных аналогов — это сильно.

    Определил вредителя: плагин «jQuery Vertical Mega Menu»

    Деактивировать плагин.

    плагин «jQuery Vertical Mega Menu», деактивирую.

    а вот эту ошибку как исправить?
    PHP Deprecated: Function create_function() is deprecated in ,,,,,,/wp-content/themes/giga-store/functions.php on line 326

    functions.php
    326 add_filter( 'loop_shop_per_page', create_function( '$cols', 'return ' . absint( get_theme_mod( 'archive_number_products', 24 ) ) . ';' ), 20 );

    • Ответ изменён 3 года, 1 месяц назад пользователем mypowerlogo.
Просмотр 15 ответов — с 1 по 15 (всего 21)
  • Тема «Warning: call_user_func_array()» закрыта для новых ответов.