Create folder name admin_menu path wp-content\plugins\admin_menu
Create php file name admin_menu path wp-content\plugins\admin_menu\admin_menu.php
admin_menu.php source code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 | <?php /** * Plugin Name: Admin Menu * Plugin URI: https://tutorial101.blogspot.com/ * Description: A custom admin menu. * Version: 1.0 * Author: Cairocoders * Author URI: http://tutorial101.blogspot.com/ **/ function theme_options_panel(){ add_menu_page( 'Theme page title' , 'Theme menu' , 'manage_options' , 'theme-options' , 'wps_theme_func' ); add_submenu_page( 'theme-options' , 'Settings page title' , 'Settings menu label' , 'manage_options' , 'theme-op-settings' , 'wps_theme_func_settings' ); add_submenu_page( 'theme-options' , 'FAQ page title' , 'FAQ menu label' , 'manage_options' , 'theme-op-faq' , 'wps_theme_func_faq' ); add_submenu_page( 'theme-options' , 'My List Table' , 'My List Table' , 'manage_options' , 'my-list-table' , 'wps_theme_list_table' ); } add_action( 'admin_menu' , 'theme_options_panel' ); //function function wps_theme_func(){ echo '<div class = "wrap" > <div id= "icon-users" class = "icon32" ></div> <h2>Theme Options</h2> </div>'; } function wps_theme_func_settings(){ echo '<div class = "wrap" ><div id= "icon-options-general" class = "icon32" ><br></div> <h2>Settings</h2></div>'; } function wps_theme_func_faq(){ echo '<div class = "wrap" ><div id= "icon-options-general" class = "icon32" ><br></div> <h2>FAQ</h2></div>'; } function wps_theme_list_table(){ echo '<div class = "wrap" > <div id= "icon-users" class = "icon32" ></div> <h2>My List Table Test - Pagination</h2> </div>'; global $wpdb ; echo '<form method= "get" action= "" id= "posts-filter" > <table class = "wp-list-table widefat fixed pages" > <tbody id= "the-list" > <thead> <tr> <th class = "manage-column column-cb check-column" id= "cb" scope= "col" ></th> <th class = "manage-column column-name" scope= "col" >User ID</th> <th class = "manage-column column-name" scope= "col" >Invoice #</th> <th class = "manage-column column-name" scope= "col" > Date Order</th> <th class = "manage-column column-name" scope= "col" >Paid By</th> <th class = "manage-column column-name" scope= "col" >Action</th> </tr> </thead> <tfoot> <tr> <th class = "manage-column column-cb check-column" scope= "col" ></th> <th class = "manage-column column-name" scope= "col" >User ID</th> <th class = "manage-column column-name" scope= "col" >Invoice #</th> <th class = "manage-column column-name" scope= "col" > Date Order</th> <th class = "manage-column column-name" scope= "col" >Paid By</th> <th class = "manage-column column-name" scope= "col" >Action</th> </tr> </tfoot>'; $pagenum = isset( $_GET [ 'pagenum' ] ) ? absint( $_GET [ 'pagenum' ] ) : 1; $limit = 3; // number of rows in page $offset = ( $pagenum - 1 ) * $limit ; $total = $wpdb ->get_var( "SELECT COUNT('id') FROM wp_sdn_userorder" ); $num_of_pages = ceil ( $total / $limit ); $sql_usersorder = $wpdb ->get_results( "SELECT * FROM wp_sdn_userorder ORDER BY dateorder DESC LIMIT $offset, $limit" ); $totalrec = $wpdb ->num_rows; $isodd = array ( '' , 'alternate' ); $n =0; foreach ( $sql_usersorder as $rows_usersorder ) { $n ++; $id = $rows_usersorder ->id; $user_id = $rows_usersorder ->user_id; $course_invoice = $rows_usersorder ->course_invoice; $dateorder = $rows_usersorder ->dateorder; $paidby = $rows_usersorder ->paidby; echo '<tr class="type-page ' . $isodd [ $n %2].'"> <th class = "check-column" scope= "row" ><center> '.$n.' </center></th> <td class = "column-title" ><strong><a title= "Edit" href= "#" class = "row-title" > '.$user_id.' '.rand().' </a></strong> <div class = "row-actions" > <span class = "edit" ><a title= "Edit this item" href= "#" >Edit</a> | </span> <span class = "trash" ><a href= "javascript:delusers('.$id.','.$user_id.')" title= "Move this item to the Trash" class = "submitdelete" >Trash</a> | </span> </div> </td> <td> '.$course_invoice.' </td> <td> '.$dateorder.' </td> <td> '.$paidby.' </td> <td><a href= "#" >View</a> | <a href= "#" > Delete </a></td> </tr>'; } echo '</tbody> </table> <div class = "tablenav bottom" > <div class = "alignleft actions bulkactions" >'; $page_links = paginate_links( array ( 'base' => add_query_arg( 'pagenum' , '%#%' ), 'format' => '' , 'prev_text' => __( '«' , 'text-domain' ), 'next_text' => __( '»' , 'text-domain' ), 'total' => $num_of_pages , 'current' => $pagenum ) ); if ( $page_links ) { echo '<div class="tablenav"><div class="tablenav-pages" style="margin: 1em 0">' . $page_links . '</div></div>' ; } echo '</div> <br class = "clear" > </div> </form>'; } |