Advertisement
Guest User

wp admin menu code

a guest
Nov 29th, 2011
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.69 KB | None | 0 0
  1. <?php
  2. add_action('admin_print_scripts','enqueue_sdrop');
  3. function enqueue_sdrop() {
  4. wp_enqueue_script( 'sdrop', get_bloginfo('template_directory') . '/jquery.sdrop.js', array('jquery'), '0.1' );
  5. }
  6. add_action('in_admin_header','printmenu');
  7. function printmenu() {
  8. global $menu,$submenu,$parent_file,$self,$pagenow,$plugin_page,$typenow,$submenu_file;
  9.  
  10. // Copy the existing menu data
  11. $parent_items = $menu;
  12. $submenu_items = $submenu;
  13.  
  14. // Now replace them with empty arrays to keep WP happy
  15. //$menu = $submenu = array();
  16.  
  17. if( empty( $parent_items ) )
  18. return;
  19.  
  20. // Setup array for menu items
  21. $wp_menu_items = array();
  22. // Default mode
  23. $current_mode = 'config';
  24.  
  25. // Admin url
  26. $admin_path = admin_url();
  27.  
  28. // Test stuff
  29. $test = array();
  30.  
  31. // Loop over the menu items
  32. foreach( $parent_items as $key => $menu_data ) {
  33. // Skip seperators (they don't have a key 5)
  34. if( isset( $menu_data[5] ) ) {
  35. $menu_prefix = substr( $menu_data[5], 0, 10 );
  36. switch( $menu_prefix ) {
  37. // Move content types into one section
  38. case 'menu-posts' :
  39. case 'menu-pages' :
  40. case 'menu-media' :
  41. if( isset( $menu_data[2] ) ) {
  42. if( $menu_data[2] == $parent_file )
  43. $current_mode = 'content';
  44. $wp_menu_items['content'][$key] = $menu_data;
  45. $wp_menu_items['children'][$menu_data[2]] = $submenu_items[$menu_data[2]];
  46. }
  47. break;
  48. // And everything else into another
  49. default:
  50. $wp_menu_items['settings'][$key] = $menu_data;
  51. $wp_menu_items['children'][$menu_data[2]] = ( isset( $submenu_items[$menu_data[2]] ) ) ? $submenu_items[$menu_data[2]] : array();
  52. break;
  53. }
  54. }
  55. continue;
  56. }
  57.  
  58. do_adminmenu_js();
  59. //print_page_info();
  60.  
  61. // Dealing with active items
  62. if( !empty( $plugin_page ) ) {
  63. $parent_link = $pagenow .'?page='. $plugin_page;
  64. $menu_link = $plugin_page;
  65. }
  66. elseif( !empty( $submenu_file ) ) {
  67. $parent_link = $submenu_file;
  68. $menu_link = $submenu_file;
  69. }
  70. else {
  71. $parent_link = $pagenow;
  72. $menu_link = $pagenow;
  73. }
  74. print $menu_link; // Seems to be accurate across all pages (so far so good)
  75. $a = array();
  76.  
  77. //echo get_admin_page_parent();aaaaa
  78. ?>
  79.  
  80. <div id="admin-menu-toggle">
  81. <a id="sdrop-config" class="toggle<?php echo ( 'config' == $current_mode ) ? ' current-mode': ''; ?>" href="#">Settings</a>
  82. <a id="sdrop-content" class="toggle<?php echo ( 'content' == $current_mode ) ? ' current-mode': ''; ?>" href="#">Content</a>
  83. </div>
  84.  
  85. <div class="clear"></div>
  86.  
  87. <div id="sdrop-adminmenu">
  88.  
  89. <?php if( 'config' == $current_mode ) : ?>
  90. <ul>
  91. <?php else : ?>
  92. <ul class="hidden">
  93. <?php endif; ?>
  94.  
  95. <?php foreach( $wp_menu_items['settings'] as $k => $data ) : ?>
  96.  
  97. <?php
  98. $current_parent = '';
  99. if( $parent_file == $data[2] )
  100. $current_parent = $parent_file;
  101. elseif( empty( $parent_file ) && $pagenow == $data[2] )
  102. $current_parent = $pagenow;
  103. ?>
  104.  
  105. <li class="<?php echo $data[4]; if( '' != $current_parent ) echo ' active' ?>">
  106. <a href="<?php echo $data[2]; ?>"><?php echo $data[0]; ?></a>
  107.  
  108. <?php if( isset( $submenu_items[$data[2]] ) ) : ?>
  109.  
  110. <ul class="hidden submenu">
  111.  
  112. <?php foreach( $submenu_items[$data[2]] as $k2 => $data2 ) : ?>
  113.  
  114. <?php
  115. $check = $menu_link;
  116. // Damn appending nightmare
  117. $menu_hook = get_plugin_page_hook( $data2[2], $data[2] );
  118. if( 'index.php' != $data2[2] && file_exists(WP_PLUGIN_DIR . "/{$data2[2]}") ) {
  119. $data2[2] = 'admin.php?page='. $data2[2];
  120. $check = $parent_link;
  121. }
  122. elseif( !empty( $menu_hook) ) {
  123. $data2[2] = $data[2] . '?page='. $data2[2];
  124. $check = $parent_link;
  125. }
  126. ?>
  127.  
  128. <li<?php if( $data2[2] == $check ) echo ' class="active"' ?>><a href="<?php echo $data2[2]; ?>"><?php echo $data2[0]; ?></a></li>
  129.  
  130. <?php endforeach; ?>
  131.  
  132. </ul>
  133.  
  134. <?php endif; ?>
  135.  
  136. </li>
  137.  
  138. <?php endforeach; ?>
  139. </ul>
  140. <?php //print_r( $a ); ?>
  141. <?php if( 'content' == $current_mode ) : ?>
  142. <ul>
  143. <?php else : ?>
  144. <ul class="hidden">
  145. <?php endif; ?>
  146.  
  147. <?php foreach( $wp_menu_items['content'] as $k => $data ) : ?>
  148.  
  149. <li class="<?php echo $data[4]; if( $parent_file == $data[2] || ( empty( $parent_file ) && $pagenow == $data[2] ) ) echo ' active' ?>">
  150. <a href="<?php echo $data[2]; ?>"><?php echo $data[0]; ?></a>
  151.  
  152. <?php if( isset( $submenu_items[$data[2]] ) ) : ?>
  153.  
  154. <ul class="hidden submenu">
  155.  
  156. <?php foreach( $wp_menu_items['children'][$data[2]] as $k2 => $data2 ) : ?>
  157.  
  158. <?php
  159. $check = $menu_link;
  160. // Damn appending nightmare
  161. $menu_hook = get_plugin_page_hook( $data2[2], $data[2] );
  162. if( !empty( $typenow ) ) {
  163.  
  164. }
  165. elseif( 'index.php' != $data2[2] && file_exists(WP_PLUGIN_DIR . "/{$data2[2]}") ) {
  166. $data2[2] = 'admin.php?page='. $data2[2];
  167. $check = $parent_link;
  168. }
  169. elseif( !empty( $menu_hook) ) {
  170. $data2[2] = $data[2] . '?page='. $data2[2];
  171. $check = $parent_link;
  172. }
  173. ?>
  174.  
  175. <li<?php if( $data2[2] == $check ) echo ' class="active"' ?>><a href="<?php echo $data2[2]; ?>"><?php echo $data2[0]; ?></a></li>
  176.  
  177. <?php endforeach; ?>
  178.  
  179. </ul>
  180.  
  181. <?php endif; ?>
  182.  
  183. </li>
  184.  
  185. <?php endforeach; ?>
  186. </ul>
  187.  
  188. <div class="clear"></div>
  189. </div>
  190.  
  191. <div class="clear"></div>
  192. <?php
  193. }
  194. add_action('admin_print_styles','adminmenu_css');
  195. function adminmenu_css() {
  196. global $is_IE;
  197. ?>
  198. <style type="text/css">
  199. /*
  200. #wpbody { margin-left:0!important; }
  201. #wpbody-content .wrap { margin-left:15px!important; }
  202. */
  203. <?php if( $is_IE ) echo '#wpbody { padding-top:30px; }' ?>
  204. #admin-menu-toggle { float:right;height:26px;line-height:26px;padding:20px 0 0;margin:0 15px 0 0;vertical-align:middle }
  205. #admin-menu-toggle a { display:block;padding:0 8px;margin:0 5px 0 0;float:right;-moz-border-radius: 5px 5px 0 0 }
  206. #admin-menu-toggle a.current-mode { padding:0 6px;margin:1px 5px 1px 0;background:#f1f1f1; }
  207.  
  208. #screen-options-wrap,#contextual-help-wrap { margin:1px 0 0!important;background-color:white!important; }
  209. #wphead-info { display:none!important; }
  210.  
  211. #sdrop-adminmenu { background-color:#f1f1f1;margin:0;padding:0;border:none;border-bottom:1px solid #ccc }
  212. #sdrop-adminmenu .hidden { visibility:hidden!important;display:none!important }
  213. #sdrop-adminmenu .count-0 { display:none!important; }
  214. #sdrop-adminmenu .pending-count { -moz-border-radius:5px;background:#a33;color:#fff;padding:2px 6px;font-size:10px }
  215.  
  216. #sdrop-adminmenu ul,
  217. #sdrop-adminmenu li { list-style:none;margin:0; }
  218.  
  219. #sdrop-adminmenu ul { margin-left:15px; }
  220. #sdrop-adminmenu ul.submenu { background:#fff;position:absolute;z-index:3000;border:1px solid #dfdfdf;margin-left:-31px }
  221.  
  222. #sdrop-adminmenu ul li { display:block;float:left;position:relative;z-index:4000; }
  223. #sdrop-adminmenu ul.submenu li { float:none;border:none }
  224. #sdrop-adminmenu ul li.menu-top { padding-left:30px; }
  225.  
  226.  
  227. #sdrop-adminmenu ul li a { background-color:#f1f1f1;display:block;height:20px;line-height:20px;padding:5px 15px 5px 0;color:#888;text-decoration:none; }
  228. #sdrop-adminmenu ul.submenu li a { margin:0;display:block;width:150px;padding-left:15px;background-color:#fff; }
  229.  
  230. #sdrop-adminmenu ul li.active,
  231. #sdrop-adminmenu ul li.active a { background-color:#fff; }
  232.  
  233. #sdrop-adminmenu ul.submenu li.active,
  234. #sdrop-adminmenu ul.submenu li.active a { background-color:#f1f1f1; }
  235.  
  236. #sdrop-adminmenu ul.submenu li a:hover { background-color:#f8f8f8 }
  237. #sdrop-adminmenu ul.submenu li.active a:hover { background-color:#f8f8f8 }
  238.  
  239. .menu-top {
  240. background-image: url(<?php echo admin_url('images/menu.png'); ?>);background-position: -330px -32px;
  241. }
  242. /*
  243. Non-active icon positions
  244. */
  245. .menu-icon-appearance { background-position: 0 -32px; }
  246. .menu-icon-comments { background-position: -30px -32px; }
  247. .menu-icon-dashboard { background-position: -60px -32px; }
  248. .menu-icon-links { background-position: -90px -32px; }
  249. .menu-icon-media { background-position: -120px -32px; }
  250. .menu-icon-page { background-position: -150px -32px; }
  251. .menu-icon-plugins { background-position: -180px -32px; }
  252. .menu-icon-tools { background-position: -210px -32px; }
  253. .menu-icon-settings { background-position: -240px -32px; }
  254. .menu-icon-post { background-position: -270px -32px; }
  255. .menu-icon-users { background-position: -300px -32px; }
  256.  
  257. /*
  258. Active icon positions
  259. */
  260. .menu-icon-appearance.active { background-position: 0 0; }
  261. .menu-icon-comments.active { background-position: -30px 0; }
  262. .menu-icon-dashboard.active { background-position: -60px 0; }
  263. .menu-icon-links.active { background-position: -90px 0; }
  264. .menu-icon-media.active { background-position: -120px 0; }
  265. .menu-icon-page.active { background-position: -150px 0; }
  266. .menu-icon-plugins.active { background-position: -180px 0; }
  267. .menu-icon-tools.active { background-position: -210px 0; }
  268. .menu-icon-settings.active { background-position: -240px 0; }
  269. .menu-icon-post.active { background-position: -270px 0; }
  270. .menu-icon-users.active { background-position: -300px 0; }
  271. </style>
  272. <?php
  273. }
  274. function do_adminmenu_js() {
  275. ?>
  276. <script type="text/javascript">
  277. jQuery(document).ready(function($){
  278. $('#sdrop-adminmenu').sDrop();
  279. $('#sdrop-content').click(function(){
  280. if( $(this).hasClass('current-mode') )
  281. return false;
  282. $('#sdrop-adminmenu > ul').toggleClass('hidden');
  283. $('#admin-menu-toggle a').toggleClass('current-mode');
  284. return false;
  285. });
  286. $('#sdrop-config').click(function(){
  287. if( $(this).hasClass('current-mode') )
  288. return false;
  289. $('#sdrop-adminmenu > ul').toggleClass('hidden');
  290. $('#admin-menu-toggle a').toggleClass('current-mode');
  291. return false;
  292. });
  293. $('.hidden').each(function(){
  294. if( $(this).is(':visible') )
  295. $(this).hide();
  296. });
  297. });
  298. </script>
  299. <?php
  300. }
  301. function print_page_info() {
  302. global $parent_file,$self,$pagenow,$plugin_page,$typenow,$submenu_file;
  303. $var_to_print = array(
  304. 'Parent file' => $parent_file,
  305. 'Pagenow' => $pagenow,
  306. 'Typenow' => $typenow,
  307. 'Submenu file' => $submenu_file,
  308. 'Plugin page' => $plugin_page
  309. );
  310. print '<br />';print '<br />';print '<br />';
  311. $heads = array_keys( $var_to_print );$bodys = array_values( $var_to_print );
  312.  
  313. print '<table><tr>';
  314. foreach( $heads as $description ) print '<th style="border-right:1px solid #ccc;border-bottom:1px solid #ccc;padding:0 20px 0 0;text-align:left">'.$description.'</th>';
  315. print '</tr>';
  316. print '<tr>';
  317. foreach( $bodys as $description ) print '<td style="border-right:1px solid #ccc;padding:0 20px 0 0">'.$description.'</td>';
  318. print '</tr></table>';
  319. }
  320. /**
  321. require_once( ABSPATH . '/wp-admin/includes/theme.php');
  322. print '<pre>';
  323. print_r( get_page_templates() );
  324. print '</pre>';
  325. /**/
  326. /*
  327. --------------------------------------------------------------------------------------------------------------------------------------------------------------------
  328. Request Parent Pagenow Typenow Submenu file Plugin page
  329. --------------------------------------------------------------------------------------------------------------------------------------------------------------------
  330. themes.php themes.php themes.php
  331. widgets.php themes.php widgets.php
  332. themes.php?page=custom-background themes.php themes.php custom-background
  333. index.php?page=translatable_demo index.php index.php translatable_demo
  334. admin.php?page=wp-polls/polls-manager.php wp-polls/polls-manager.php admin.php wp-polls/polls-manager.php
  335. admin.php?page=wp-polls/polls-add.php wp-polls/polls-manager.php admin.php wp-polls/polls-add.php
  336. edit-comments.php edit-comments.php
  337. edit.php edit.php edit.php post edit.php
  338. post-new.php edit.php post-new.php post post-new.php
  339. edit-tags.php?taxonomy=post_tag edit.php edit-tags.php ** edit-tags.php?taxonomy=post_tag
  340. edit-tags.php?taxonomy=category edit.php edit-tags.php ** edit-tags.php?taxonomy=category
  341. edit.php?post_type=book edit.php?post_type=book edit.php book edit.php?post_type=book
  342. post-new.php?post_type=book edit.php?post_type=book post-new.php book post-new.php?post_type=book
  343. edit-tags.php?taxonomy=category&post_type=book edit.php?post_type=book edit-tags.php book edit-tags.php?taxonomy=category&post_type=book
  344. edit-tags.php?taxonomy=post_tag&post_type=book edit.php?post_type=book edit-tags.php book edit-tags.php?taxonomy=post_tag&post_type=book
  345. --------------------------------------------------------------------------------------------------------------------------------------------------------------------
  346. NOTE: ** items under typenow should be set, but are not strangely
  347. */
  348.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement