Call_user_func_array(): аргумент №1 ($callback) должен быть допустимым обратным вызовом [дубликат] ⇐ Php
Call_user_func_array(): аргумент №1 ($callback) должен быть допустимым обратным вызовом [дубликат]
Сейчас я разрабатываю плагин WordPress. Созданный мной основной класс активирует и деактивирует все необходимые функции, настройки и файлы для плагина, и я использую composer для управления включением классов.
Вчера я изменил основную папку psr-4 с src/ на admin/builder/, и это вызвало проблемы.
Теперь иерархия проекта такая:
на канале Facebook\ |---админ\ |---строитель |---Действие\ |---RSA\ |---Просмотр\ |---OnFeedMain.php |---поставщик\ |---активы\ |---onfeed.php |---... Я должен отметить, что после редактирования файла composer.json я также выполнил команду composer dump-autoload... но все равно получаю эту ошибку:
р>
Неустранимая ошибка: Uncaught TypeError: call_user_func_array(): Аргумент № 1 ($callback) должен быть допустимым обратным вызовом, первый элемент массива не является допустимым именем класса или объектом в C:\www\clientwp.local\ wp-includes\class-wp-hook.php:310 Трассировки стека: #0 C:\www\clientwp.local\wp-includes\class-wp-hook.php(334): WP_Hook->apply_filters('', Array) #1 C:\www\clientwp.local\wp-includes\plugin.php(517): WP_Hook->do_action(Array) #2 C:\www\clientwp.local\wp-admin\includes\plugin.php(816): do_action('deactivate_onfe...', false) #3 C:\www\clientwp.local\wp-admin\plugins.php(209): deactivate_plugins('onfeed-facebook...', false, false) #4 {main} добавлен в C:\www\clientwp.local\wp-includes\class-wp-hook.php в строке 310. Вот файл composer.json:
"автозагрузка": { "пср-4": { "Oppimittinetworking\\OnfeedFacebook\\": "admin/builder/" } }, "конфигурация": { «оптимизировать-автозагрузчик»: правда } Это класс OnFeedMain.php:
пространство имен Oppimittinetworking\OnfeedFacebook; используйте Oppimittinetworking\OnfeedFacebook\Action\ONFActivate; используйте Oppimittinetworking\OnfeedFacebook\Action\ONFDeactivate; используйте Oppimittinetworking\OnfeedFacebook\RSA\ONFRSAEncrypt; используйте Oppimittinetworking\OnfeedFacebook\RSA\ONFRSADecrypt; класс OnFeedMain { публичная функция __construct() { ONFActivate::Activate(); ONFActivate::register_admin_scripts(); ONFActivate::register_wp_scripts(); } публичная функция __deactivate() { ONFDeactivate::деактивировать(); ONFDeactivate::unregister_admin_scripts(); ONFDeactivate::unregister_wp_scripts(); } общественная статическая функция encrypt_conn () {возвращение нового ONFRSAEncrypt (); } общественная функция decrypt_data () {возвращение нового ONFRSADecrypt (); } } Вот файл onfeed.php:
require_once ONFEED_PLUGIN_PATH . '/vendor/autoload.php'; используйте Oppimittinetworking\OnfeedFacebook\OnFeedMain; если ( class_exists('OnFeedMain')) $onfmain = новый OnFeedMain(); // хук активации Register_activation_hook( __FILE__, array($onfmain, '__construct')); // хук деактивации Register_deactivation_hook( __FILE__, array($onfmain, '__deactivate')); Вот функции внутри классов ONFActivate.php и ONFDeactivate.php:
ONFActivate.php:
пространство имен Oppimittinetworking\OnfeedFacebook\Action; класс ONFActivate { публичная статическая функция active() { // Нет соответствующего кода... } общедоступная статическая функция Register_admin_scripts() { add_action('admin_enqueue_scripts', array('Oppimittinetworking\OnfeedFacebook\Action\ONFActivate', "enqueue_admin" )); add_action( 'admin_menu', array( "Oppimittinetworking\OnfeedFacebook\Action\ONFActivate", 'add_admin_pages')); } общедоступная статическая функция add_admin_pages() { add_menu_page( 'OnFeed Facebook', 'OnFeed Facebook', 'manage_options', 'onfeed_admin_menu', array( 'Oppimittinetworking\OnfeedFacebook\Action\ONFActivate', 'admin_index'), 'dashicons-facebook-alt', 110); } публичная статическая функция admin_index() { require_once плагин_dir_path( __FILE__ ) . '../../admin/builder/index.php'; } общедоступная статическая функция Register_wp_scripts() { // ДЕЛАТЬ } публичная статическая функция enqueue_admin() { // Ставим в очередь CSS-файлы администратора // [email protected] wp_register_style("bootstrap", "https://cdn.jsdelivr.net/npm/bootstrap@ ... ap.min.css"); wp_enqueue_style("бутстрап"); // [email protected] wp_register_style( "font_awesome", "https://cdnjs.cloudflare.com/ajax/libs/ ... ll.min.css"); wp_enqueue_style("font_awesome"); wp_enqueue_style( "onfeed_main_css", plugins_url( "../../assets/css/main.css", __FILE__ ) ); wp_enqueue_style( "onfeed_shortcut_css", плагины_url( "../../assets/css/shortcut.css", __FILE__ )); wp_enqueue_style( "onfeed_feedspage_css", плагины_url( "../../assets/css/feedspage.css", __FILE__ ) ); // Ставим в очередь файлы администратора js // [email protected] wp_enqueue_script( "jquery_3_7_1-min", plugins_url( "../../assets/js/jquery-3.7.1.min.js", __FILE__), null, '3.7.1', array('strategy' => 'асинхронный')); wp_enqueue_script( "onfeed_function_js", plugins_url( "../../assets/js/function.js", __FILE__), null, '2.2.0', array('strategy' => 'defer')); wp_enqueue_script( "onfeed_handshake_js", plugins_url( "../../assets/js/handshake.js", __FILE__), null, '2.2.0', array('strategy' => 'defer')); wp_enqueue_script( "onfeed_shortcut_js", плагины_url( "../../assets/js/shortcut.js", __FILE__), null, '2.2.0', array('strategy' => 'defer')); wp_enqueue_script( "onfeed_feedspage_js", плагины_url( "../../assets/js/feedspage.js", __FILE__), null, '2.2.0', array('strategy' => 'defer')); } публичная статическая функция enqueue_wp() { // ДЕЛАТЬ } } ONFDeactivate.php:
пространство имен Oppimittinetworking\OnfeedFacebook\Action; класс ONFDeactivate { публичная статическая функция deactivate() { // Нерелевантный код... } публичная статическая функция unregister_admin_scripts() { add_action('admin_dequeue_scripts', array('Oppimittinetworking\OnfeedFacebook\Action\ONFDeactivate', "dequeue_admin" )); } общедоступная статическая функция unregister_wp_scripts() { // ДЕЛАТЬ } публичная статическая функция dequeue_admin() { // Ставим в очередь CSS-файлы администратора wp_dequeue_style("onfeed_main_css"); wp_dequeue_style("onfeed_shortcut_css"); wp_dequeue_style("onfeed_feedspage_css"); // Ставим в очередь файлы администратора js wp_dequeue_script("onfeed_main_js"); wp_dequeue_script("onfeed_shortcut_js"); wp_dequeue_script("onfeed_feedspage_js"); } публичная статическая функция dequeue_wp() { // ДЕЛАТЬ } } Я также хотел бы сообщить вам, что я проверил, была ли проблема вызвана неправильным пространством имен, но как вы можете убедиться, что с этим нет проблем.
Я также проверил эту ссылку:
[*]Неперехваченная ошибка типа: call_user_func_array(): аргумент №1 ($function) должен быть допустимым обратным вызовом
но проблема все равно.
Заранее благодарим за ответ.
Сейчас я разрабатываю плагин WordPress. Созданный мной основной класс активирует и деактивирует все необходимые функции, настройки и файлы для плагина, и я использую composer для управления включением классов.
Вчера я изменил основную папку psr-4 с src/ на admin/builder/, и это вызвало проблемы.
Теперь иерархия проекта такая:
на канале Facebook\ |---админ\ |---строитель |---Действие\ |---RSA\ |---Просмотр\ |---OnFeedMain.php |---поставщик\ |---активы\ |---onfeed.php |---... Я должен отметить, что после редактирования файла composer.json я также выполнил команду composer dump-autoload... но все равно получаю эту ошибку:
р>
Неустранимая ошибка: Uncaught TypeError: call_user_func_array(): Аргумент № 1 ($callback) должен быть допустимым обратным вызовом, первый элемент массива не является допустимым именем класса или объектом в C:\www\clientwp.local\ wp-includes\class-wp-hook.php:310 Трассировки стека: #0 C:\www\clientwp.local\wp-includes\class-wp-hook.php(334): WP_Hook->apply_filters('', Array) #1 C:\www\clientwp.local\wp-includes\plugin.php(517): WP_Hook->do_action(Array) #2 C:\www\clientwp.local\wp-admin\includes\plugin.php(816): do_action('deactivate_onfe...', false) #3 C:\www\clientwp.local\wp-admin\plugins.php(209): deactivate_plugins('onfeed-facebook...', false, false) #4 {main} добавлен в C:\www\clientwp.local\wp-includes\class-wp-hook.php в строке 310. Вот файл composer.json:
"автозагрузка": { "пср-4": { "Oppimittinetworking\\OnfeedFacebook\\": "admin/builder/" } }, "конфигурация": { «оптимизировать-автозагрузчик»: правда } Это класс OnFeedMain.php:
пространство имен Oppimittinetworking\OnfeedFacebook; используйте Oppimittinetworking\OnfeedFacebook\Action\ONFActivate; используйте Oppimittinetworking\OnfeedFacebook\Action\ONFDeactivate; используйте Oppimittinetworking\OnfeedFacebook\RSA\ONFRSAEncrypt; используйте Oppimittinetworking\OnfeedFacebook\RSA\ONFRSADecrypt; класс OnFeedMain { публичная функция __construct() { ONFActivate::Activate(); ONFActivate::register_admin_scripts(); ONFActivate::register_wp_scripts(); } публичная функция __deactivate() { ONFDeactivate::деактивировать(); ONFDeactivate::unregister_admin_scripts(); ONFDeactivate::unregister_wp_scripts(); } общественная статическая функция encrypt_conn () {возвращение нового ONFRSAEncrypt (); } общественная функция decrypt_data () {возвращение нового ONFRSADecrypt (); } } Вот файл onfeed.php:
require_once ONFEED_PLUGIN_PATH . '/vendor/autoload.php'; используйте Oppimittinetworking\OnfeedFacebook\OnFeedMain; если ( class_exists('OnFeedMain')) $onfmain = новый OnFeedMain(); // хук активации Register_activation_hook( __FILE__, array($onfmain, '__construct')); // хук деактивации Register_deactivation_hook( __FILE__, array($onfmain, '__deactivate')); Вот функции внутри классов ONFActivate.php и ONFDeactivate.php:
ONFActivate.php:
пространство имен Oppimittinetworking\OnfeedFacebook\Action; класс ONFActivate { публичная статическая функция active() { // Нет соответствующего кода... } общедоступная статическая функция Register_admin_scripts() { add_action('admin_enqueue_scripts', array('Oppimittinetworking\OnfeedFacebook\Action\ONFActivate', "enqueue_admin" )); add_action( 'admin_menu', array( "Oppimittinetworking\OnfeedFacebook\Action\ONFActivate", 'add_admin_pages')); } общедоступная статическая функция add_admin_pages() { add_menu_page( 'OnFeed Facebook', 'OnFeed Facebook', 'manage_options', 'onfeed_admin_menu', array( 'Oppimittinetworking\OnfeedFacebook\Action\ONFActivate', 'admin_index'), 'dashicons-facebook-alt', 110); } публичная статическая функция admin_index() { require_once плагин_dir_path( __FILE__ ) . '../../admin/builder/index.php'; } общедоступная статическая функция Register_wp_scripts() { // ДЕЛАТЬ } публичная статическая функция enqueue_admin() { // Ставим в очередь CSS-файлы администратора // [email protected] wp_register_style("bootstrap", "https://cdn.jsdelivr.net/npm/bootstrap@ ... ap.min.css"); wp_enqueue_style("бутстрап"); // [email protected] wp_register_style( "font_awesome", "https://cdnjs.cloudflare.com/ajax/libs/ ... ll.min.css"); wp_enqueue_style("font_awesome"); wp_enqueue_style( "onfeed_main_css", plugins_url( "../../assets/css/main.css", __FILE__ ) ); wp_enqueue_style( "onfeed_shortcut_css", плагины_url( "../../assets/css/shortcut.css", __FILE__ )); wp_enqueue_style( "onfeed_feedspage_css", плагины_url( "../../assets/css/feedspage.css", __FILE__ ) ); // Ставим в очередь файлы администратора js // [email protected] wp_enqueue_script( "jquery_3_7_1-min", plugins_url( "../../assets/js/jquery-3.7.1.min.js", __FILE__), null, '3.7.1', array('strategy' => 'асинхронный')); wp_enqueue_script( "onfeed_function_js", plugins_url( "../../assets/js/function.js", __FILE__), null, '2.2.0', array('strategy' => 'defer')); wp_enqueue_script( "onfeed_handshake_js", plugins_url( "../../assets/js/handshake.js", __FILE__), null, '2.2.0', array('strategy' => 'defer')); wp_enqueue_script( "onfeed_shortcut_js", плагины_url( "../../assets/js/shortcut.js", __FILE__), null, '2.2.0', array('strategy' => 'defer')); wp_enqueue_script( "onfeed_feedspage_js", плагины_url( "../../assets/js/feedspage.js", __FILE__), null, '2.2.0', array('strategy' => 'defer')); } публичная статическая функция enqueue_wp() { // ДЕЛАТЬ } } ONFDeactivate.php:
пространство имен Oppimittinetworking\OnfeedFacebook\Action; класс ONFDeactivate { публичная статическая функция deactivate() { // Нерелевантный код... } публичная статическая функция unregister_admin_scripts() { add_action('admin_dequeue_scripts', array('Oppimittinetworking\OnfeedFacebook\Action\ONFDeactivate', "dequeue_admin" )); } общедоступная статическая функция unregister_wp_scripts() { // ДЕЛАТЬ } публичная статическая функция dequeue_admin() { // Ставим в очередь CSS-файлы администратора wp_dequeue_style("onfeed_main_css"); wp_dequeue_style("onfeed_shortcut_css"); wp_dequeue_style("onfeed_feedspage_css"); // Ставим в очередь файлы администратора js wp_dequeue_script("onfeed_main_js"); wp_dequeue_script("onfeed_shortcut_js"); wp_dequeue_script("onfeed_feedspage_js"); } публичная статическая функция dequeue_wp() { // ДЕЛАТЬ } } Я также хотел бы сообщить вам, что я проверил, была ли проблема вызвана неправильным пространством имен, но как вы можете убедиться, что с этим нет проблем.
Я также проверил эту ссылку:
[*]Неперехваченная ошибка типа: call_user_func_array(): аргумент №1 ($function) должен быть допустимым обратным вызовом
но проблема все равно.
Заранее благодарим за ответ.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Почему вызов неоднозначен между Task.Run
(Func ) и Task.Run(Func ) при передаче имени метода
Anonymous » » в форуме C# - 0 Ответы
- 92 Просмотры
-
Последнее сообщение Anonymous
-