Intereting Posts
Измените код get_current_user_id на профиль автора Форма поиска WordPress и результат поиска через поле ACF в пользовательской таксономии Ссылки категории обрывают https Как отображать контент только для разрешенного IP-адреса Корректировка ширины содержимого, когда боковая панель неактивна? Перенаправление после успешной регистрации в форме регистрации Проверьте, публикуется ли публикация в первый раз, или обновляется уже опубликованное сообщение Детская тема не работает должным образом Пользовательская база данных или пользовательские типы сообщений? Как удалить доступ к пользовательскому интерфейсу в пользовательский тип сообщения с помощью прямых ссылок? Как удалить страницу стилей с помощью src, а не обрабатывать? Захват WordPress для посещения сообщения Как разместить карту сайта для каждого сообщения? Уровни пользовательского интерфейса Rest API Невозможно добавить медиафайлы на страницу

Попытка добавить скрипт к определенной странице администратора не работает

То, что я пытаюсь достичь, – загрузить файл .js на странице edit.php, однако код не работает специально для этой страницы. Я применил тот же код кода кода к другим страницам CPT, но по какой-то причине эта страница CPT не регистрирует скрипт.

Вот код, который я использую:

add_action( 'admin_menu', 'contacts_table_add_pages', 99 ); function contacts_table_add_pages(){ $menu = add_menu_page( 'Contacts', 'Contacts', 'publish_posts', 'edit.php?post_type=contact' ); $submenu = add_submenu_page('contacts', 'Add Contact', 'Add Contact', 'publish_posts', 'post-new.php?post_type=contact'); add_action( 'load-' . $menu, 'contacts_table_add_custom_css_js', 11 ); } function contacts_table_add_custom_css_js() { add_action( 'admin_enqueue_scripts', 'contacts_table_css_js', 11 ); } function contacts_table_css_js() { wp_enqueue_script( 'contacts', PLUGIN_URL . 'contacts/includes/contacts.js' ); } 

Причина, по которой я создаю новый элемент меню CPT, состоит в том, что он когда-то был частью списка подменю другого плагина, поэтому я удалил его и создал свой собственный пункт меню.

Я сделал то же самое для CPT другого плагина, и он работал нормально. Это только этот CPT из другого плагина, который не работает.

Есть ли подсказки о том, что может быть?

Спасибо, Рок.

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

 <?php add_action('init', 'wpse99123_post_type_switcher', 999); function wpse99123_post_type_switcher() { global $wp_post_types; $wp_post_types['contact']->show_in_menu = true; // put it back in the menu } 

Затем, чтобы загрузить CSS / JS / whatever, вам нужно подключиться к load-edit.php и проверить тип сообщения текущего экрана и добавить туда функции очереди.

 <?php add_action('load-edit.php', 'wpse99123_load_edit'); function wpse99123_load_edit() { $screen = get_current_screen(); if (!isset($screen->post_type) || 'contact' !== $screen->post_type) { return; // not where we want to be, bail } // add enqueues here. add_action('admin_enqueue_scripts', 'wpse99123_enqueue'); } function wpse99123_enqueue() { // ... } 

Вы должны сделать load-edit.php потому что $screen->post_type будет связываться с вашими изменениями контактов ( post.php ) и добавлять новые ( post-new.php ) страницы.