Ошибка Call to undefined function get_current_screen() на локальном сервере

27 мая 2014 г., 05:33:35
Просмотры: 14.5K
Голосов: 5

Я использую WordPress 3.9.1 и получаю ошибку:

Fatal error: Call to undefined function get_current_screen()

если добавляю следующий код в functions.php или любой другой файл темы:

$screen = get_current_screen();
echo $screen;

Изначально эта ошибка появилась при разработке моей темы. Я пробовал разные темы, включая TwentyFourteen, но ошибка оставалась. Даже удалил базу данных WordPress, создал новую и переустановил WordPress, но это не помогло.

Я проверил функцию get_current_screen() в файле wp-admin/includes/screen.php - она там есть.

Работаю на XAMPP, плагины не активированы (чистая установка). В wp-config.php изменил только настройки MySQL (база данных, имя пользователя и пароль) и DEBUG mode.

Есть идеи как это исправить?

1
Комментарии

Пожалуйста, [отредактируйте] больше вашего кода в вопрос, чтобы я мог увидеть, что вы пытаетесь сделать.

s_ha_dum s_ha_dum
27 мая 2014 г. 16:21:06
Все ответы на вопрос 3
1
10

Вы можете попробовать следующее:

if ( !function_exists( 'get_current_screen' ) ) { 
   require_once ABSPATH . '/wp-admin/includes/screen.php'; 
} 
$screen = get_current_screen();
echo $screen;
2 нояб. 2020 г. 12:59:45
Комментарии

Это включает функцию, да, но, как говорится в другом ответе, она не вернет значимого результата (поскольку предназначена для использования в админке, а если бы мы были в админке, она уже была бы включена).

Rup Rup
2 нояб. 2020 г. 15:42:07
2

get_current_screen() — это функция бэкенда, которая возвращает данные о текущей странице администрирования в админке. Использовать её в коде темы бессмысленно. Единственный способ, как она может работать (я предполагаю, но не проверял) в functions.php — если она подключена через хук бэкенда, который срабатывает позже, чем admin_init.

Вы не объясняете, что пытаетесь сделать с помощью get_current_screen(), но, скорее всего, используете её неправильно.

27 мая 2014 г. 06:14:07
Комментарии

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

user1981248 user1981248
27 мая 2014 г. 06:59:45

вам нужно обернуть это в проверку is_admin() или запускать на хуке admin_init или другом хуке, доступном только в админке

Tom J Nowell Tom J Nowell
14 нояб. 2023 г. 15:28:49
0

возможно, ваш код выполняется до admin_init. Добавьте его в действие:

add_action('admin_init', function(){
  $screen = get_current_screen();
  echo $screen;
});
14 нояб. 2023 г. 14:29:45