Вопрос или проблема
Я использую это после того, как проверю, является ли пользователь администратором
if ( isset($_GET['action']) && $_GET['action'] === 'edit' )
Есть ли лучший способ?
Вы можете использовать get_current_screen
, чтобы определить это.
$screen = get_current_screen();
if ( $screen->parent_base == 'edit' ) {
echo 'экран редактирования';
}
Не знаю, могу ли я точно сказать, что это всегда лучше, это зависит от того, что необходимо, но, вероятно, это то, как я бы это сделал. Большое преимущество этого метода в том, что вы получаете доступ к большему объему информации и, следовательно, можете делать больше и разные различия. Просто посмотрите документацию, чтобы понять, что я имею в виду.
Следует использовать на более поздних хуках, Codex говорит:
Функция возвращает
null
, если вызвана из хукаadmin_init
. Ее
можно использовать на более позднем хуке, таком какcurrent_screen
.
редактировать: читайте комментарии на возможные недостатки.
Вы можете использовать глобальную переменную $pagenow
global $pagenow;
if ($pagenow == 'post.php' && get_post_type() == 'post') {
// редактирование поста блога
}
if ($pagenow == 'profile.php') {
// редактирование страницы профиля пользователя
}
- Используйте ‘get_current_screen’, просто заранее убедитесь, что она существует.
- Как codex говорит “Эта функция определена на большинстве административных страниц, но не на всех.”
- Это также фильтрует обычные (ориентированные на читателя) представления (перечитайте это
предложение с акцентом на административные страницы). -
Вполне вероятно, что следующее, что вы хотите выяснить, это, находитесь ли вы действительно на странице или посте…
// Удалить ненужные мета блоки поста function FRANK_TWEAKS_current_screen() { // "Эта функция определена на большинстве административных страниц, но не на всех." if ( function_exists('get_current_screen')) { $pt = get_current_screen()->post_type; if ( $pt != 'post' && $pt != 'page') return; remove_meta_box( 'authordiv',$pt ,'normal' ); // Мета блок Автора remove_meta_box( 'commentstatusdiv',$pt ,'normal' ); // Мета блок Статус Комментариев remove_meta_box( 'commentsdiv',$pt ,'normal' ); // Мета блок Комментариев remove_meta_box( 'postcustom',$pt ,'normal' ); // Мета блок Пользовательские Поля remove_meta_box( 'postexcerpt',$pt ,'normal' ); // Мета блок Извлечение remove_meta_box( 'revisionsdiv',$pt ,'normal' ); // Мета блок Ревизии remove_meta_box( 'slugdiv',$pt ,'normal' ); // Мета блок Слаг remove_meta_box( 'trackbacksdiv',$pt ,'normal' ); // Мета блок Трекбэки } } add_action( 'current_screen', 'FRANK_TWEAKS_current_screen' );
Ответ или решение
Для того чтобы определить, находится ли администратор на странице редактирования поста или страницы в админ-панели WordPress, существует несколько методов. Каждый из этих методов имеет свои особенности и может быть использован в зависимости от конкретных требований и контекста.
1. Использование функции get_current_screen()
Это один из наиболее рекомендуемых способов. Функция get_current_screen()
возвращает объект текущего экрана админ-панели, который позволяет получить доступ ко множеству данных о текущей странице. Для использования этой функции, убедитесь, что она вызывается на более поздних хуках, таких как current_screen
.
Пример кода:
add_action('current_screen', 'check_if_edit_screen');
function check_if_edit_screen() {
if (function_exists('get_current_screen')) {
$screen = get_current_screen();
if ($screen->base === 'post' && $screen->action === 'edit') {
echo 'Вы находитесь на странице редактирования поста.';
}
}
}
2. Глобальная переменная $pagenow
Еще один способ – использование глобальной переменной $pagenow
, которая содержит имя текущего файла админ-страницы. Это применяется в более простых сценариях, когда достаточно проверить, какой файл загружен.
Пример:
global $pagenow;
if ($pagenow == 'post.php' && get_post_type() == 'post') {
echo 'Вы редактируете блог-пост.';
} elseif ($pagenow == 'profile.php') {
echo 'Вы редактируете свой профиль.';
}
3. Проверка через переменную $_GET
Этот подход включает в себя проверку параметров URL. Если в строке запроса присутствует параметр action
со значением edit
, значит, мы находимся на странице редактирования.
Пример:
if (isset($_GET['action']) && $_GET['action'] === 'edit') {
echo 'Вы на странице редактирования.';
}
Заключение
Выбор подходящего метода зависит от вашей конкретной ситуации и того, какую дополнительную информацию вам нужно получить. Однако, как правило, использование get_current_screen()
является наиболее мощным и гибким способом. Убедитесь, что вы используете его на соответствующих хуках, чтобы избежать ошибок выполнения.
Во всех случаях важно также учитывать контекст, в котором будет выполняться код, и необходимость в фильтрации пользовательских ролей и прав доступа, чтобы обеспечивать безопасность и корректное функционирование вашего кода в админ-панели WordPress.