Intereting Posts
Не изменяйте пул Custom Post Type для уникального значения Ошибка выходного буфера с просмотром одного сообщения Как добавить список в редактор TinyMCE? single-{post-type} .php не работает в wordpress Могу ли я помешать авторам изменить шрифт в своем сообщении? Как добавить новое сообщение с помощью формы в категории, когда категории используются в качестве меню Что случилось с convertEntities? Что означает «аутентифицированный» для wp_ajax_nopriv? Ссылки на странице часто задаваемых вопросов не работают Параметры экрана и кнопки справки не работают при включении Bootstrap Css Как объединить / добавить готовый контент к выпуску в WordPress, когда произошли изменения в процессе производства во время работы? Удаление jQuery из нижнего колонтитула Получить оригинальное изображение Рекомендуемое изображение на главной странице Проверка экземпляров скриптов в wp_head Ошибка PHP с обработчиком shortcode из класса

Условия для администратора 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 ?

Вы можете использовать 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' ) ); } }