Intereting Posts
Как навсегда удалить запись метаданных? Очистка файла cookie при выходе из системы и завершении сеанса Удалите взломанный код – из идей! Жесткий-кодированный аудиоплеер Как отобразить 5 последних названий сообщений, но разрешить только 1 в определенной категории is_home и is_frontpage всегда верно Тестирование для короткого кода с использованием функции. Ошибка 404 страницы Настройка тем: как вы получаете значение позже? Заявление SQL, созданное WP_Query, не создающее ожидаемых результатов Почему сгенерированный POT-файл из WordPress.org не добавляет мое описание плагина в файл POT? Значения метабокса отображаются в списке Custom Fields. Можно ли их скрыть? Изменение размера редактора wordpress Переупорядочивать сообщения в цикле: иметь сообщения одного конкретного автора ниже других Как я могу получить WP для создания фида на основе нескольких таксономических условий Сравните два пользовательских типа сообщений, используя одну и ту же пользовательскую таксономию

Условия для администратора get_current_screen action parent_file edit.php? Post_type = page

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

Однако этот сценарий вызывает Uncaught TypeError: на типах post post, который является правильным ответом, и я понимаю, что это не то место, где мой фокус должен измениться.

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

Была предпринята тщательная проверка, чтобы найти и проработать это, но без большой удачи. В class-wp-screen.php , 95, я нахожу $parent_base , но я не знаю, как отформатировать это для соответствия условиям.

Мое изменение кода

 add_action('admin_enqueue_scripts', 'gp_front_page_script'); function gp_front_page_script() { if ( isset( $_GET['post']) && isset( $_GET['action']) && $_GET['action'] == 'edit' ) { wp_enqueue_script('gp_fp', plugins_url() . '/network-plugins/includes/globals/genpages/front-page.js', array('jquery')); } } 

Как отформатировать условие для загрузки скрипта на edit.php?post_type=page а не на каком-либо другом экране, т.е. edit.php ?

Solutions Collecting From Web of "Условия для администратора get_current_screen action parent_file edit.php? Post_type = page"

Вы можете использовать get_current_screen() чтобы получить информацию о текущем экране. Мы хотим подключиться или после load-edit.php потому что get_current_screen() определен непосредственно перед этим подключением.

load-edit.php к load-edit.php , мы гарантируем, что этот код будет edit.php только на странице edit.php . Затем мы проверяем текущий экран, чтобы увидеть, является ли тип сообщения страницей. Если это так, мы вставляем скрипт в очередь.

 add_action( 'load-edit.php', 'wpse_259909_load_edit' ); function wpse_259909_load_edit() { if( 'page' === get_current_screen()->post_type ) { add_action( 'admin_enqueue_scripts', 'gp_front_page_script' ); } } function gp_front_page_script() { wp_enqueue_script( 'gp_fp', plugins_url() . '/network-plugins/includes/globals/genpages/front-page.js', array( 'jquery' ) ); } 

Если вам нужен сценарий на отдельных страницах редактирования, вы также можете добавить этот крючок.

 add_action( 'load-page.php', 'wpse_259909_load_edit' ); 

Если вам нужен скрипт на новых страницах редактирования, вы также можете добавить этот крючок.

 add_action( 'load-page-new.php', 'wpse_259909_load_edit' ); 

Я не уверен, почему приведенный выше код не работает для вас. Я добавил этот код в пустой плагин при новой установке WP 4.7.3, и он вставляет javascript в голову после jQuery.

load-edit.php срабатывает довольно рано в запросе, поэтому, возможно, вы слишком поздно добавляете крючок.

Вы также можете использовать get_current_screen() в admin_enqueue_scripts и admin_enqueue_scripts , но вам нужно убедиться, что вы находитесь на экране редактирования. Так что это тоже сработает.

 add_action( 'admin_enqueue_scripts', 'gp_front_page_script' ); function gp_front_page_script() { $current_screen = get_current_screen(); if( 'edit' === $current_screen->parent_base && 'page' === $current_screen->post_type ) { wp_enqueue_script( 'gp_fp', plugins_url() . '/network-plugins/includes/globals/genpages/front-page.js', array( 'jquery' ) ); } }