# Получение Родительской Страницы Административной Панели (GET_ADMIN_PAGE_PARENT)
Функция get_admin_page_parent()
используется для определения родительского файла текущей страницы в административной панели WordPress. Это удобно, если вам нужно узнать, к какому разделу меню относится открытая в данный момент страница.
### Основные параметры функции
- **Использование**:
```php
get_admin_page_parent( $parent_page );
- Параметр:
$parent_page
(строка): Идентификатор родительского меню (или имя файла стандартной страницы администратора WordPress).- По умолчанию: пустая строка.
Возвращаемое значение
Функция возвращает строку с именем родительского файла текущей страницы административной панели.
Примеры использования
Пример 1: Отображение имени родительского файла для стандартного элемента меню
В этом примере мы добавляем пункт подменю в раздел «Инструменты» и выводим родительский файл этой страницы.
add_action( 'admin_menu', 'mat_add_submenu_page' );
function mat_add_submenu_page() {
add_submenu_page(
'tools.php',
'Массовое добавление терминов',
'Массовое добавление терминов',
'manage_categories',
'mat-admin',
'mat_admin_page_content'
);
}
function mat_admin_page_content() {
echo get_admin_page_parent(); // выводит: tools.php
}
Пример 2: Отображение имени родительского файла в CF7 (Контактная Форма 7)
В этом примере мы добавляем подменю для главного меню плагина Contact Form 7 и также выводим родительский файл страницы.
add_action( 'admin_menu', 'cf7_submodule_add_menu_page' );
function cf7_submodule_add_menu_page() {
add_submenu_page(
'wpcf7',
'Модуль для CF7',
'Страница модуля для CF7',
'wpcf7_read_contact_forms',
'cf7-submodule-admin',
'cf7_submodule_admin_page_content'
);
}
function cf7_submodule_admin_page_content() {
echo get_admin_page_parent(); // выводит: wpcf7
}
Примечания
- Переменные, которые могут быть полезны:
- $parent_file: хранилище для имени родительского файла.
- $menu: массив всех пунктов меню.
- $submenu: массив всех подменю.
- $pagenow: имя файла текущего экрана.
- $typenow: тип записи текущего экрана.
Изменения в функции
Функция get_admin_page_parent()
была введена в версии WordPress 1.5.0. Она продолжает использоваться и в современных версиях WordPress.
function get_admin_page_parent( $parent_page = '' ) {
global $parent_file, $menu, $submenu, $pagenow, $typenow,
$plugin_page, $_wp_real_parent_file, $_wp_menu_nopriv, $_wp_submenu_nopriv;
// Проверка родительской страницы и возврат ее имени
if ( ! empty( $parent_page ) && 'admin.php' !== $parent_page ) {
if ( isset( $_wp_real_parent_file[ $parent_page ] ) ) {
$parent_page = $_wp_real_parent_file[ $parent_page ];
}
return $parent_page;
}
// Обработка для админки
if ( 'admin.php' === $pagenow && isset( $plugin_page ) ) {
foreach ( (array) $menu as $parent_menu ) {
if ( $parent_menu[2] === $plugin_page ) {
$parent_file = $plugin_page;
if ( isset( $_wp_real_parent_file[ $parent_file ] ) ) {
$parent_file = $_wp_real_parent_file[ $parent_file ];
}
return $parent_file;
}
}
if ( isset( $_wp_menu_nopriv[ $plugin_page ] ) ) {
$parent_file = $plugin_page;
if ( isset( $_wp_real_parent_file[ $parent_file ] ) ) {
$parent_file = $_wp_real_parent_file[ $parent_file ];
}
return $parent_file;
}
}
// Обработка для других страниц
if ( isset( $plugin_page ) && isset( $_wp_submenu_nopriv[ $pagenow ][ $plugin_page ] ) ) {
$parent_file = $pagenow;
if ( isset( $_wp_real_parent_file[ $parent_file ] ) ) {
$parent_file = $_wp_real_parent_file[ $parent_file ];
}
return $parent_file;
}
foreach ( array_keys( (array) $submenu ) as $parent_page ) {
foreach ( $submenu[ $parent_page ] as $submenu_array ) {
if ( isset( $_wp_real_parent_file[ $parent_page ] ) ) {
$parent_page = $_wp_real_parent_file[ $parent_page ];
}
if ( ! empty( $typenow ) && "$pagenow?post_type=$typenow" === $submenu_array[2] ) {
$parent_file = $parent_page;
return $parent_page;
} elseif ( empty( $typenow ) && $pagenow === $submenu_array[2]
&& ( empty( $parent_file ) || ! str_contains( $parent_file, '?' ) )
) {
$parent_file = $parent_page;
return $parent_page;
} elseif ( isset( $plugin_page ) && $plugin_page === $submenu_array[2] ) {
$parent_file = $parent_page;
return $parent_page;
}
}
}
// Если ничего не найдено
if ( empty( $parent_file ) ) {
$parent_file = '';
}
return '';
}
Теперь вы можете использовать функцию get_admin_page_parent()
в своих проектах и легко находить родительские страницы админки WordPress.