count() calls.
<?php/*** Build Administration Menu.** @package WordPress* @subpackage Administration*/if ( is_network_admin() ) {/*** Fires before the administration menu loads in the Network Admin.** The hook fires before menus and sub-menus are removed based on user privileges.** @private* @since 3.1.0*/do_action( '_network_admin_menu' );} elseif ( is_user_admin() ) {/*** Fires before the administration menu loads in the User Admin.** The hook fires before menus and sub-menus are removed based on user privileges.** @private* @since 3.1.0*/do_action( '_user_admin_menu' );} else {/*** Fires before the administration menu loads in the admin.** The hook fires before menus and sub-menus are removed based on user privileges.** @private* @since 2.2.0*/do_action( '_admin_menu' );}// Create list of page plugin hook names.foreach ( $menu as $menu_page ) {$pos = strpos( $menu_page[2], '?' );if ( false !== $pos ) {// Handle post_type=post|page|foo pages.$hook_name = substr( $menu_page[2], 0, $pos );$hook_args = substr( $menu_page[2], $pos + 1 );wp_parse_str( $hook_args, $hook_args );// Set the hook name to be the post type.if ( isset( $hook_args['post_type'] ) ) {$hook_name = $hook_args['post_type'];} else {$hook_name = basename( $hook_name, '.php' );}unset( $hook_args );} else {$hook_name = basename( $menu_page[2], '.php' );}$hook_name = sanitize_title( $hook_name );if ( isset( $compat[ $hook_name ] ) ) {$hook_name = $compat[ $hook_name ];} elseif ( ! $hook_name ) {continue;}$admin_page_hooks[ $menu_page[2] ] = $hook_name;}unset( $menu_page, $compat );$_wp_submenu_nopriv = array();$_wp_menu_nopriv = array();// Loop over submenus and remove pages for which the user does not have privs.foreach ( $submenu as $parent => $sub ) {foreach ( $sub as $index => $data ) {if ( ! current_user_can( $data[1] ) ) {unset( $submenu[ $parent ][ $index ] );$_wp_submenu_nopriv[ $parent ][ $data[2] ] = true;}}unset( $index, $data );if ( empty( $submenu[ $parent ] ) ) {unset( $submenu[ $parent ] );}}unset( $sub, $parent );/** Loop over the top-level menu.* Menus for which the original parent is not accessible due to lack of privileges* will have the next submenu in line be assigned as the new menu parent.*/foreach ( $menu as $id => $data ) {if ( empty( $submenu[ $data[2] ] ) ) {continue;}$subs = $submenu[ $data[2] ];$first_sub = reset( $subs );$old_parent = $data[2];$new_parent = $first_sub[2];/** If the first submenu is not the same as the assigned parent,* make the first submenu the new parent.*/if ( $new_parent != $old_parent ) {$_wp_real_parent_file[ $old_parent ] = $new_parent;$menu[ $id ][2] = $new_parent;foreach ( $submenu[ $old_parent ] as $index => $data ) {$submenu[ $new_parent ][ $index ] = $submenu[ $old_parent ][ $index ];unset( $submenu[ $old_parent ][ $index ] );}unset( $submenu[ $old_parent ], $index );if ( isset( $_wp_submenu_nopriv[ $old_parent ] ) ) {$_wp_submenu_nopriv[ $new_parent ] = $_wp_submenu_nopriv[ $old_parent ];}}}unset( $id, $data, $subs, $first_sub, $old_parent, $new_parent );if ( is_network_admin() ) {/*** Fires before the administration menu loads in the Network Admin.** @since 3.1.0** @param string $context Empty context.*/do_action( 'network_admin_menu', '' );} elseif ( is_user_admin() ) {/*** Fires before the administration menu loads in the User Admin.** @since 3.1.0** @param string $context Empty context.*/do_action( 'user_admin_menu', '' );} else {/*** Fires before the administration menu loads in the admin.** @since 1.5.0** @param string $context Empty context.*/do_action( 'admin_menu', '' );}/** Remove menus that have no accessible submenus and require privileges* that the user does not have. Run re-parent loop again.*/foreach ( $menu as $id => $data ) {if ( ! current_user_can( $data[1] ) ) {$_wp_menu_nopriv[ $data[2] ] = true;}/** If there is only one submenu and it is has same destination as the parent,* remove the submenu.*/if ( ! empty( $submenu[ $data[2] ] ) && 1 === count( $submenu[ $data[2] ] ) ) {$subs = $submenu[ $data[2] ];$first_sub = reset( $subs );if ( $data[2] == $first_sub[2] ) {unset( $submenu[ $data[2] ] );}}// If submenu is empty...if ( empty( $submenu[ $data[2] ] ) ) {// And user doesn't have privs, remove menu.if ( isset( $_wp_menu_nopriv[ $data[2] ] ) ) {unset( $menu[ $id ] );}}}unset( $id, $data, $subs, $first_sub );/*** @param string $add* @param string $class* @return string*/function add_cssclass( $add, $class ) {$class = empty( $class ) ? $add : $class .= ' ' . $add;return $class;}/*** @param array $menu* @return array*/function add_menu_classes( $menu ) {$first = false;$lastorder = false;$i = 0;$mc = count( $menu );foreach ( $menu as $order => $top ) {$i++;if ( 0 == $order ) { // Dashboard is always shown/single.$menu[0][4] = add_cssclass( 'menu-top-first', $top[4] );$lastorder = 0;continue;}if ( 0 === strpos( $top[2], 'separator' ) && false !== $lastorder ) { // If separator.$first = true;$c = $menu[ $lastorder ][4];$menu[ $lastorder ][4] = add_cssclass( 'menu-top-last', $c );continue;}if ( $first ) {$c = $menu[ $order ][4];$menu[ $order ][4] = add_cssclass( 'menu-top-first', $c );$first = false;}if ( $mc == $i ) { // Last item.$c = $menu[ $order ][4];$menu[ $order ][4] = add_cssclass( 'menu-top-last', $c );}$lastorder = $order;}/*** Filters administration menus array with classes added for top-level items.** @since 2.7.0** @param array $menu Associative array of administration menu items.*/return apply_filters( 'add_menu_classes', $menu );}uksort( $menu, 'strnatcasecmp' ); // Make it all pretty./*** Filters whether to enable custom ordering of the administration menu.** See the {@see 'menu_order'} filter for reordering menu items.** @since 2.8.0** @param bool $custom Whether custom ordering is enabled. Default false.*/if ( apply_filters( 'custom_menu_order', false ) ) {$menu_order = array();foreach ( $menu as $menu_item ) {$menu_order[] = $menu_item[2];}unset( $menu_item );$default_menu_order = $menu_order;/*** Filters the order of administration menu items.** A truthy value must first be passed to the {@see 'custom_menu_order'} filter* for this filter to work. Use the following to enable custom menu ordering:** add_filter( 'custom_menu_order', '__return_true' );** @since 2.8.0** @param array $menu_order An ordered array of menu items.*/$menu_order = apply_filters( 'menu_order', $menu_order );$menu_order = array_flip( $menu_order );$default_menu_order = array_flip( $default_menu_order );/*** @global array $menu_order* @global array $default_menu_order** @param array $a* @param array $b* @return int*/function sort_menu( $a, $b ) {global $menu_order, $default_menu_order;$a = $a[2];$b = $b[2];if ( isset( $menu_order[ $a ] ) && ! isset( $menu_order[ $b ] ) ) {return -1;} elseif ( ! isset( $menu_order[ $a ] ) && isset( $menu_order[ $b ] ) ) {return 1;} elseif ( isset( $menu_order[ $a ] ) && isset( $menu_order[ $b ] ) ) {if ( $menu_order[ $a ] == $menu_order[ $b ] ) {return 0;}return ( $menu_order[ $a ] < $menu_order[ $b ] ) ? -1 : 1;} else {return ( $default_menu_order[ $a ] <= $default_menu_order[ $b ] ) ? -1 : 1;}}usort( $menu, 'sort_menu' );unset( $menu_order, $default_menu_order );}// Prevent adjacent separators.$prev_menu_was_separator = false;foreach ( $menu as $id => $data ) {if ( false === stristr( $data[4], 'wp-menu-separator' ) ) {// This item is not a separator, so falsey the toggler and do nothing.$prev_menu_was_separator = false;} else {// The previous item was a separator, so unset this one.if ( true === $prev_menu_was_separator ) {unset( $menu[ $id ] );}// This item is a separator, so truthy the toggler and move on.$prev_menu_was_separator = true;}}unset( $id, $data, $prev_menu_was_separator );// Remove the last menu item if it is a separator.$last_menu_key = array_keys( $menu );$last_menu_key = array_pop( $last_menu_key );if ( ! empty( $menu ) && 'wp-menu-separator' === $menu[ $last_menu_key ][4] ) {unset( $menu[ $last_menu_key ] );}unset( $last_menu_key );if ( ! user_can_access_admin_page() ) {/*** Fires when access to an admin page is denied.** @since 2.5.0*/do_action( 'admin_page_access_denied' );wp_die( __( 'Sorry, you are not allowed to access this page.' ), 403 );}$menu = add_menu_classes( $menu );
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。