get_admin_page_parent() WP 1.5.0

Отримує ключ батьківської сторінки адмінки щодо поточної сторінки.

Встановлює глобальну змінну адмінки global $parent_file , в якій зберігається ім’я батьківського файлу, який відповідає за виведення поточної сторінки адмінки. Це ім’я може бути використане в ключах глобального масиву $ submenu : $ submenu [ $ parent ] , в який додаються підпункти меню через функцію add_submenu_page ( ) .

1 раз – 0.000001 сек
(швидкість світла) | 50000 разів – 0.60 сек
(дуже швидко) |
PHP 7.3.20, WP 5.5.3

Хуків немає.

Повертає

Строку. Ключ батьківської сторінки адмінці. Приклади значень, що повертаються:

profile.php
users.php
edit.php
edit.php?post_type=page
tools.php
edit-tags.php?taxonomy=link_category

Використання

get_admin_page_parent($parent);
$parent
(рядок)
Ярлик батьківського пункту адмін-меню (або ім’я файлу для дефолтних пунктів меню).


За замовчуванням: ”

Приклади

0

#1 Відобразимо назву батьківського файлу дефолтного пункту меню

Додамо під-пункт меню за допомогою add_submenu_page() до пункту меню “Інструменти”:

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
}
0

#2 Відобразимо назву батьківського файлу у CF7

Додамо підменю до основного меню 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
}

нотатки

  • Global. Рядок. $parent_file
  • Global. Масив. $menu
  • Global. Масив. $submenu
  • Global. Рядок. $pagenow Filename of the current screen.
  • Global. Рядок. $typenow The post type of current screen.
  • Global. Рядок. $plugin_page
  • Global. Масив. $_wp_real_parent_file
  • Global. Масив. $_wp_menu_nopriv
  • Global. Масив. $_wp_submenu_nopriv

список змін

З версії 1.5.0Введено.

Код get_admin_page_parent() WP 6.0.2

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 ) || false === strpos( $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 '';
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *