add_menu_page(string $page_title, string $menu_title,string $capability, string $menu_slug, callable $function = ”, string $icon_url = ”, int $position = null)
اضافه کردن یک منو در پنل مدیریت.
توضیحات
با استفاده از این تابع میتوان یک آیتم منو در بخش مدیریت ایجاد کرد و برای هر آیتم منو میتوان یک صفحه در بخش مدیریت ایجاد نمود. این تابع بررسی میکند که کاربر قابلیت دیدن صفحه را دارد یا خیر.
پارامترها:
page_title: عنوان صفحه که در تگ title نوشته میشود را باید وارد کنید. این عنوان زمانی که منو انتخاب میشود نمایش داده میشود. این مقدار ضروری(Required) است و از نوع رشته(string) میباشد.
menu_title: متنی که به عنوان منو می باشد. ضروری است و از نوع رشته ای است.
capability: این پارامتر ضروری است و برای این منو به کاربر نمایش داده میشود.
menu_slug: مقدار slug که به این منو اشاره میکند. این مقدار باید یکتا باشد و فقط برای این منو و صفحه استفاده میشود این پارامتر ضروری و متنی است. مقدار این پارامتر شامل الفبا، خط فاصله، و خط زیر باشد این مقدار باید با تابع sanitize_key مطابقت داشته باشد.
function: نام تابعی که قابلیت فراخوانی و نمایش خروجی برای این صفحه میباشد.(اختیاری و قابل فراخوانی). مقدار پیش فرض:”
icon_url: آدرس آیکنی که برای منو میخواهید استفاده کنید(اختیاری- قابل فراخوانی)
برای این پارامتر می توان از SVG استفاده کرد و یا از آیکن های تعریف شده در وردپرس که در کلاس Dashicons استفاده کنید. به عنوان مثال dashicons-chart-pie.
مقدار پیش فرض را خالی رها کنید تا یک آیکن پیش فرض در آن ثبت شود.
position: موقعیت قرار گیری منو در بین منوهای مدیریت وردپرس.(اختیاری)( مقدار عددی). مقدار پیش فرض: null
مقدار بازگشت
نتیجه این تابع یک صفحه hook_suffix (متنی)است.
منبع:
File: wp-admin/includes/plugin.php
function add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $function = '', $icon_url = '', $position = null ) { global $menu, $admin_page_hooks, $_registered_pages, $_parent_pages; $menu_slug = plugin_basename( $menu_slug ); $admin_page_hooks[ $menu_slug ] = sanitize_title( $menu_title ); $hookname = get_plugin_page_hookname( $menu_slug, '' ); if ( ! empty( $function ) && ! empty( $hookname ) && current_user_can( $capability ) ) { add_action( $hookname, $function ); } if ( empty( $icon_url ) ) { $icon_url = 'dashicons-admin-generic'; $icon_class = 'menu-icon-generic '; } else { $icon_url = set_url_scheme( $icon_url ); $icon_class = ''; } $new_menu = array( $menu_title, $capability, $menu_slug, $page_title, 'menu-top ' . $icon_class . $hookname, $hookname, $icon_url ); if ( null === $position ) { $menu[] = $new_menu; } elseif ( isset( $menu[ "$position" ] ) ) { $position = $position + substr( base_convert( md5( $menu_slug . $menu_title ), 16, 10 ), -5 ) * 0.00001; $menu[ "$position" ] = $new_menu; } else { $menu[ $position ] = $new_menu; } $_registered_pages[ $hookname ] = true; // No parent as top level $_parent_pages[ $menu_slug ] = false; return $hookname; }
یک مثال که به کاربر اجازه می دهد داده ها را ذخیره کند.
// Register settings using the Settings API function wpdocs_register_my_setting() { register_setting( 'my-options-group', 'my-option-name', 'intval' ); } add_action( 'admin_init', 'wpdocs_register_my_setting' ); // Modify capability function wpdocs_my_page_capability( $capability ) { return 'edit_others_posts'; } add_filter( 'option_page_capability_my-options-group', 'wpdocs_my_page_capability' );
ساختار منوها در وردپرس
پیش فرض: منوها انتهای لیست اضافه می شود.
4 – Separator
5 – Posts
10 – Media
15 – Links
20 – Pages
25 – Comments
59 – Separator
60 – Appearance
65 – Plugins
70 – Users
75 – Tools
80 – Settings
99 – Separator
برای منو وردپرس شبکه ای مقدارهای متفاوت است:
2 – Dashboard
4 – Separator
5 – Sites
10 – Users
15 – Themes
20 – Plugins
25 – Settings
30 – Updates
99 – Separator
مثال: کد زیر یک آیتم منو به منو ادمین وردپرس، با قابلیت مشاهده مدیریت اضافه می کند.
روش اول:
/** * Register a custom menu page. */ function wpdocs_register_my_custom_menu_page() { add_menu_page( __( 'Custom Menu Title', 'textdomain' ), 'custom menu', 'manage_options', 'myplugin/myplugin-admin.php', '', plugins_url( 'myplugin/images/icon.png' ), 6 ); } add_action( 'admin_menu', 'wpdocs_register_my_custom_menu_page' );
با این روش از کدنویسی شما باید یک پلاگین ایجاد کنید مثلا : myplugin/myplugin-admin.php
< ? php esc_html_e( 'Admin Page Test', 'textdomain' ); ? >
روش دوم:
/** * Register a custom menu page. */ function wpdocs_register_my_custom_menu_page(){ add_menu_page( __( 'Custom Menu Title', 'textdomain' ), 'custom menu', 'manage_options', 'custompage', 'my_custom_menu_page', plugins_url( 'myplugin/images/icon.png' ), 6 ); } add_action( 'admin_menu', 'wpdocs_register_my_custom_menu_page' ); /** * Display a custom menu page */ function my_custom_menu_page(){ esc_html_e( 'Admin Page Test', 'textdomain' ); }