本文整理汇总了PHP中get_admin_page_parent函数的典型用法代码示例。如果您正苦于以下问题:PHP get_admin_page_parent函数的具体用法?PHP get_admin_page_parent怎么用?PHP get_admin_page_parent使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了get_admin_page_parent函数的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: user_can_access_admin_page
function user_can_access_admin_page()
{
global $pagenow;
global $menu;
global $submenu;
global $_wp_menu_nopriv;
global $_wp_submenu_nopriv;
global $plugin_page;
global $_registered_pages;
$parent = get_admin_page_parent();
if (!isset($plugin_page) && isset($_wp_submenu_nopriv[$parent][$pagenow])) {
return false;
}
if (isset($plugin_page)) {
if (isset($_wp_submenu_nopriv[$parent][$plugin_page])) {
return false;
}
$hookname = get_plugin_page_hookname($plugin_page, $parent);
if (!isset($_registered_pages[$hookname])) {
return false;
}
}
if (empty($parent)) {
if (isset($_wp_menu_nopriv[$pagenow])) {
return false;
}
if (isset($_wp_submenu_nopriv[$pagenow][$pagenow])) {
return false;
}
if (isset($plugin_page) && isset($_wp_submenu_nopriv[$pagenow][$plugin_page])) {
return false;
}
if (isset($plugin_page) && isset($_wp_menu_nopriv[$plugin_page])) {
return false;
}
foreach (array_keys($_wp_submenu_nopriv) as $key) {
if (isset($_wp_submenu_nopriv[$key][$pagenow])) {
return false;
}
if (isset($plugin_page) && isset($_wp_submenu_nopriv[$key][$plugin_page])) {
return false;
}
}
return true;
}
if (isset($plugin_page) && $plugin_page == $parent && isset($_wp_menu_nopriv[$plugin_page])) {
return false;
}
if (isset($submenu[$parent])) {
foreach ($submenu[$parent] as $submenu_array) {
if (isset($plugin_page) && $submenu_array[2] == $plugin_page) {
if (current_user_can($submenu_array[1])) {
return true;
} else {
return false;
}
} else {
if ($submenu_array[2] == $pagenow) {
if (current_user_can($submenu_array[1])) {
return true;
} else {
return false;
}
}
}
}
}
foreach ($menu as $menu_array) {
if ($menu_array[2] == $parent) {
if (current_user_can($menu_array[1])) {
return true;
} else {
return false;
}
}
}
return true;
}
示例2: get_current_menu_item
/**
* Determine which menu item matches the currently open admin page.
*
* @uses self::$reverse_item_lookup
* @return array|null Menu item in the internal format, or NULL if no matching item can be found.
*/
private function get_current_menu_item()
{
if (!is_admin() || empty($this->reverse_item_lookup)) {
if (!is_admin()) {
$this->log_security_note('This is not an admin page. is_admin() returns false.');
} else {
if (empty($this->reverse_item_lookup)) {
$this->log_security_note('Warning: reverse_item_lookup is empty!');
}
}
return null;
}
//The current menu item doesn't change during a request, so we can cache it
//and avoid searching the entire menu every time.
static $cached_item = null;
if ($cached_item !== null) {
return $cached_item;
}
//Find an item where *all* query params match the current ones, with as few extraneous params as possible,
//preferring sub-menu items. This is intentionally more strict than what we do in menu-highlight-fix.js,
//since this function is used to check menu access.
//TODO: Use get_current_screen() to determine the current post type and taxonomy.
$best_item = null;
$best_extra_params = PHP_INT_MAX;
$base_site_url = get_site_url();
if (preg_match('@(^\\w+://[^/]+)@', $base_site_url, $matches)) {
//Extract scheme + hostname.
$base_site_url = $matches[1];
}
//Calling admin_url() once and then manually appending each page's path is measurably faster than calling it
//for each menu, but it means the "admin_url" filter is only called once. If there is a plugin that changes
//the admin_url for some pages but not others, this could lead to bugs (no such plugins are known at this time).
$base_admin_url = admin_url();
$admin_url_is_filtered = has_filter('admin_url');
$current_url = $base_site_url . remove_query_arg('___ame_dummy_param___');
$this->log_security_note(sprintf('Current URL: "%s"', htmlentities($current_url)));
$current_url = $this->parse_url($current_url);
//Hook-based submenu pages can be accessed via both "parent-page.php?page=foo" and "admin.php?page=foo".
//WP has a private API function for determining the canonical parent page for the current request.
if ($this->endsWith($current_url['path'], '/admin.php') && is_callable('get_admin_page_parent')) {
$real_parent = get_admin_page_parent('admin.php');
if (!empty($real_parent) && $real_parent !== 'admin.php') {
$current_url['alt_path'] = str_replace('/admin.php', '/' . $real_parent, $current_url['path']);
}
}
foreach ($this->reverse_item_lookup as $url => $item) {
$item_url = $url;
//Convert to absolute URL. Caution: directory traversal (../, etc) is not handled.
if (strpos($item_url, '://') === false) {
if (substr($item_url, 0, 1) == '/') {
$item_url = $base_site_url . $item_url;
} else {
if ($admin_url_is_filtered) {
$item_url = admin_url($item_url);
} else {
$item_url = $base_admin_url . ltrim($item_url, '/');
}
}
}
$item_url = $this->parse_url($item_url);
//Must match scheme, host, port, user, pass and path or alt_path.
$components = array('scheme', 'host', 'port', 'user', 'pass');
$is_close_match = $this->urlPathsMatch($current_url['path'], $item_url['path']);
if (!$is_close_match && isset($current_url['alt_path'])) {
$is_close_match = $this->urlPathsMatch($current_url['alt_path'], $item_url['path']);
//Technically, we should also compare current[path] vs item[alt_path],
//but generating the alt_path for each menu item would be complicated.
}
foreach ($components as $component) {
$is_close_match = $is_close_match && $current_url[$component] == $item_url[$component];
if (!$is_close_match) {
break;
}
}
//The current URL must match all query parameters of the item URL.
$different_params = array_diff_assoc($item_url['params'], $current_url['params']);
//The current URL must have as few extra parameters as possible.
$extra_params = array_diff_assoc($current_url['params'], $item_url['params']);
if ($is_close_match && count($different_params) == 0 && count($extra_params) < $best_extra_params) {
$best_item = $item;
$best_extra_params = count($extra_params);
}
}
$cached_item = $best_item;
return $best_item;
}
示例3: get_plugin_page_hookname
function get_plugin_page_hookname($plugin_page, $parent_page)
{
global $admin_page_hooks;
$parent = get_admin_page_parent();
if (empty($parent_page) || 'admin.php' == $parent_page) {
if (isset($admin_page_hooks[$plugin_page])) {
$page_type = 'toplevel';
} else {
if (isset($admin_page_hooks[$parent])) {
$page_type = $admin_page_hooks[$parent];
}
}
} else {
if (isset($admin_page_hooks[$parent_page])) {
$page_type = $admin_page_hooks[$parent_page];
} else {
$page_type = 'admin';
}
}
$plugin_name = preg_replace('!\\.php!', '', $plugin_page);
return $page_type . '_page_' . $plugin_name;
}
示例4: apply_filters
*
* @since MU
*
* @param string $parent_file The parent file.
*/
$parent_file = apply_filters('parent_file', $parent_file);
/**
* Filter the file of an admin menu sub-menu item.
*
* @since 4.4.0
*
* @param string $submenu_file The submenu file.
* @param string $parent_file The submenu item's parent file.
*/
$submenu_file = apply_filters('submenu_file', $submenu_file, $parent_file);
get_admin_page_parent();
/**
* Display menu.
*
* @access private
* @since 2.7.0
*
* @global string $self
* @global string $parent_file
* @global string $submenu_file
* @global string $plugin_page
* @global string $typenow
*
* @param array $menu
* @param array $submenu
* @param bool $submenu_as_parent
示例5: menus
/**
* Generates the Shopp admin menus
*
* @author Jonathan Davis
* @since 1.1
*
* @return void
**/
public function menus()
{
global $menu, $plugin_page;
$access = 'shopp_menu';
if (Shopp::maintenance()) {
$access = 'manage_options';
}
// Add main menus
$position = shopp_admin_add_menu(Shopp::__('Shopp'), 'orders', 40, false, 'shopp_orders', Shopp::clearpng());
shopp_admin_add_menu(Shopp::__('Catalog'), 'products', $position, false, 'shopp_products', Shopp::clearpng());
// Add after the Shopp menus to avoid being purged by the duplicate separator check
$menu[$position - 1] = array('', 'read', 'separator-shopp', '', 'wp-menu-separator');
// Add menus to WordPress admin
foreach ($this->pages as $page) {
$this->submenus($page);
}
$parent = get_admin_page_parent();
if (isset($this->menus[$parent]) && false === strpos($this->menus[$parent], 'toplevel')) {
$current_page = $plugin_page;
$plugin_page = $parent;
add_action('adminmenu', create_function('', 'global $plugin_page; $plugin_page = "' . $current_page . '";'));
}
}
示例6: user_can_access_admin_page
function user_can_access_admin_page() {
global $pagenow;
global $menu;
global $submenu;
global $_wp_menu_nopriv;
global $_wp_submenu_nopriv;
global $plugin_page;
$parent = get_admin_page_parent();
if ( isset( $_wp_submenu_nopriv[$parent][$pagenow] ) )
return false;
if ( isset( $plugin_page ) && isset( $_wp_submenu_nopriv[$parent][$plugin_page] ) )
return false;
if ( empty( $parent) ) {
if ( isset( $_wp_menu_nopriv[$pagenow] ) )
return false;
if ( isset( $_wp_submenu_nopriv[$pagenow][$pagenow] ) )
return false;
if ( isset( $plugin_page ) && isset( $_wp_submenu_nopriv[$pagenow][$plugin_page] ) )
return false;
foreach (array_keys( $_wp_submenu_nopriv ) as $key ) {
if ( isset( $_wp_submenu_nopriv[$key][$pagenow] ) )
return false;
if ( isset( $plugin_page ) && isset( $_wp_submenu_nopriv[$key][$plugin_page] ) )
return false;
}
return true;
}
if ( isset( $submenu[$parent] ) ) {
foreach ( $submenu[$parent] as $submenu_array ) {
if ( isset( $plugin_page ) && ( $submenu_array[2] == $plugin_page ) ) {
if ( current_user_can( $submenu_array[1] ))
return true;
else
return false;
} else if ( $submenu_array[2] == $pagenow ) {
if ( current_user_can( $submenu_array[1] ))
return true;
else
return false;
}
}
}
foreach ( $menu as $menu_array ) {
if ( $menu_array[2] == $parent) {
if ( current_user_can( $menu_array[1] ))
return true;
else
return false;
}
}
return true;
}
示例7: dslc_load_scripts_admin
/**
* Load CSS and JS files in wp-admin area
*
* @since 1.1
*/
public static function dslc_load_scripts_admin($hook)
{
/* Check current screen id and set var accordingly */
$current_screen = '';
if ('post-new.php' === $hook || 'post.php' === $hook) {
$current_screen = 'post-editing';
}
if (false !== strpos($hook, 'dslc_plugin_options') || false !== strpos($hook, 'dslc_getting_started') || 'dslc_plugin_options' === get_admin_page_parent()) {
$current_screen = 'dslc-options';
}
if ('toplevel_page_livecomposer_editor' === $hook) {
$current_screen = 'dslc-editing-screen';
}
/* Define some variables affecting further scripts loading */
// Load minimized scripts and css resources.
$min_suffix = '';
if (!SCRIPT_DEBUG) {
$min_suffix = '.min';
}
// What protocol to use.
$protocol = 'http';
if (is_ssl()) {
$protocol = 'https';
}
/* If current screen is Live Composer editing screen */
if ('dslc-editing-screen' === $current_screen && is_user_logged_in() && current_user_can(DS_LIVE_COMPOSER_CAPABILITY)) {
global $dslc_active;
/**
* Live Composer Active
*/
wp_enqueue_media();
/**
* CSS
*/
wp_enqueue_style('dslc-builder-main-css', DS_LIVE_COMPOSER_URL . 'css/builder/builder.main.css', array(), DS_LIVE_COMPOSER_VER);
wp_enqueue_style('dslc-builder-plugins-css', DS_LIVE_COMPOSER_URL . 'css/builder/builder.plugins.css', array(), DS_LIVE_COMPOSER_VER);
wp_enqueue_style('dslc-font-awesome', DS_LIVE_COMPOSER_URL . 'css/font-awesome' . $min_suffix . '.css', array(), DS_LIVE_COMPOSER_VER);
/**
* JavaScript
*/
wp_enqueue_script('jquery-ui-core');
wp_enqueue_script('jquery-ui-sortable');
wp_enqueue_script('jquery-ui-draggable');
wp_enqueue_script('jquery-ui-droppable');
wp_enqueue_script('jquery-effects-core');
wp_enqueue_script('jquery-ui-resizable');
wp_enqueue_script('wp-mediaelement');
wp_enqueue_script('imagesloaded');
// Need this for Masonry.
wp_enqueue_script('jquery-masonry');
wp_enqueue_script('dslc-builder-plugins-js', DS_LIVE_COMPOSER_URL . 'js/builder/builder.plugins.js', array('jquery'), DS_LIVE_COMPOSER_VER);
if (!SCRIPT_DEBUG) {
wp_enqueue_script('dslc-builder-main-js', DS_LIVE_COMPOSER_URL . 'js/builder.all.min.js', array('jquery'), DS_LIVE_COMPOSER_VER);
} else {
self::load_scripts('builder', 'dslc-builder-main-js');
}
wp_localize_script('dslc-builder-main-js', 'DSLCAjax', array('ajaxurl' => admin_url('admin-ajax.php', $protocol)));
$translation_array = array('str_confirm' => __('Confirm', 'live-composer-page-builder'), 'str_ok' => __('OK', 'live-composer-page-builder'), 'str_import' => __('IMPORT', 'live-composer-page-builder'), 'str_exit_title' => __('You are about to exit Live Composer', 'live-composer-page-builder'), 'str_exit_descr' => __('If you have unsaved changed they will be lost.<br>If the "Publish Changes" button is shown in bottom right corner click it to save.', 'live-composer-page-builder'), 'str_area_helper_text' => __('MODULES AREA', 'live-composer-page-builder'), 'str_row_helper_text' => __('MODULES ROW', 'live-composer-page-builder'), 'str_import_row_title' => __('Import Row', 'live-composer-page-builder'), 'str_import_row_descr' => __('Copy the row export code bellow.', 'live-composer-page-builder'), 'str_del_module_title' => __('Delete Module', 'live-composer-page-builder'), 'str_del_module_descr' => __('Are you sure you want to delete this module?', 'live-composer-page-builder'), 'str_del_area_title' => __('Delete Area/Column', 'live-composer-page-builder'), 'str_del_area_descr' => __('Are you sure you want to delete this modules area?', 'live-composer-page-builder'), 'str_del_row_title' => __('Delete Row', 'live-composer-page-builder'), 'str_del_row_descr' => __('Are you sure you want to delete this row?', 'live-composer-page-builder'), 'str_export_row_title' => __('Export Row', 'live-composer-page-builder'), 'str_export_row_descr' => __('The code bellow is the importable code for this row.', 'live-composer-page-builder'), 'str_module_curr_edit_title' => __('You are currently editing a module', 'live-composer-page-builder'), 'str_module_curr_edit_descr' => __('You need to either <strong>confirm</strong> or <strong>cancel</strong> those changes before continuing.', 'live-composer-page-builder'), 'str_row_curr_edit_title' => __('You are currently editing a modules row', 'live-composer-page-builder'), 'str_row_curr_edit_descr' => __('You need to either <strong>confirm</strong> or <strong>cancel</strong> those changes before continuing.', 'live-composer-page-builder'), 'str_refresh_title' => __('You are about to refresh the page', 'live-composer-page-builder'), 'str_refresh_descr' => __('If you have unsaved changed they will be lost.<br>If the "Publish Changes" button is shown in bottom right corner click it to save.', 'live-composer-page-builder'), 'str_res_tablet' => __('Tablet', 'live-composer-page-builder'), 'str_res_phone' => __('Phone', 'live-composer-page-builder'));
// Allow devs to alter available fonts.
$fonts_array = apply_filters('dslc_available_fonts', self::$fonts_array);
wp_localize_script('dslc-builder-main-js', 'DSLCString', $translation_array);
wp_localize_script('dslc-builder-main-js', 'DSLCFonts', self::$fonts_array);
// Array of icons available to be used.
global $dslc_var_icons;
wp_localize_script('dslc-builder-main-js', 'DSLCIcons', $dslc_var_icons);
}
/* If current screen is standard post editing screen in WP Admin */
if ('post-editing' === $current_screen) {
wp_enqueue_script('dslc-post-options-js-admin', DS_LIVE_COMPOSER_URL . 'includes/post-options-framework/js/main' . $min_suffix . '.js', array('jquery', 'jquery-ui-core', 'jquery-ui-datepicker'), DS_LIVE_COMPOSER_VER);
if ('page' === get_post_type(get_the_ID()) && 'post.php' === $hook) {
wp_localize_script('dslc-post-options-js-admin', 'tabData', array('tabTitle' => __('Page Builder', 'live-composer-page-builder')));
}
wp_enqueue_style('jquery-ui-datepicker', '//ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/themes/smoothness/jquery-ui.css');
wp_enqueue_style('dslc-post-options-css-admin', DS_LIVE_COMPOSER_URL . 'includes/post-options-framework/css/main' . $min_suffix . '.css', array(), DS_LIVE_COMPOSER_VER);
/* If Yoast WP is active */
if (defined('WPSEO_VERSION')) {
wp_enqueue_script('dslc-yoast-seo-admin', DS_LIVE_COMPOSER_URL . 'js/builder.wpadmin/builder.yoast-seo.js', array(), DS_LIVE_COMPOSER_VER, true);
}
}
/* If current screen is Live Composer options page */
if ('dslc-options' === $current_screen) {
wp_enqueue_script('dslc-plugin-options-js-admin', DS_LIVE_COMPOSER_URL . 'includes/plugin-options-framework/js/main' . $min_suffix . '.js', array('jquery'), DS_LIVE_COMPOSER_VER);
wp_enqueue_style('dslc-plugin-options-css-admin', DS_LIVE_COMPOSER_URL . 'includes/plugin-options-framework/css/main' . $min_suffix . '.css', array(), DS_LIVE_COMPOSER_VER);
wp_localize_script('dslc-plugin-options-js-admin', 'dslcajax', array('nonce' => wp_create_nonce('dslc-optionspanel-ajax')));
}
}
示例8: get_admin_page_title
function get_admin_page_title() {
global $title;
global $menu;
global $submenu;
global $pagenow;
global $plugin_page;
if (isset($title) && ! empty($title)) {
return $title;
}
$parent = get_admin_page_parent();
if (empty($parent)) {
foreach ($menu as $menu_array) {
if (isset($menu_array[3])) {
if ($menu_array[2] == $pagenow) {
$title = $menu_array[3];
return $menu_array[3];
} else if (isset($plugin_page) && ($plugin_page == $menu_array[2])) {
$title = $menu_array[3];
return $menu_array[3];
}
}
}
} else {
foreach (array_keys($submenu) as $parent) {
foreach ($submenu[$parent] as $submenu_array) {
if (isset($submenu_array[3])) {
if ($submenu_array[2] == $pagenow) {
$title = $submenu_array[3];
return $submenu_array[3];
} else if (isset($plugin_page) && ($plugin_page == $submenu_array[2])) {
$title = $submenu_array[3];
return $submenu_array[3];
}
}
}
}
}
return '';
}