Administration Menus در وردپرس
برای پیاده سازی پنل های شخصی در محیط ادمین وردپرس نیاز هست که یک منو به همراه یک صفحه در وردپرس ایجاد کنیم. هر منو که ایجاد میشه به دنبال اون یک پنل یا یک صفحه در پنل ادمین شما خواهید داشت که می تونید اطلاعات خودتون رو در اون پیاده سازی کنید.
درسته که شما یک صفحه خواهید داشت اما می تونید با استفاده از پارامتر GET اطلاعاتتون رو در اون پردازش کنید. همچنین می تونید فرم های شخصی با استفاده از پارامتر POST در پنل پیاده سازی کنید. همچنین می تونید SETTING API رو در پنل پیاده سازی کنید.
در پنل ادمین وردپرس یک منو داریم و یک زیر منو که هر زیر منو به یک منو متصل هست. پس زیر منو رو هم میشه به منوهای پیش فرض وردپرس اضافه کرد هم میشه به منوهایی که جدید اضافه کرد.
ساختار Top-Level Menu در پنل ادمین وردپرس
برای این کار از تابع add_menu_page
در وردپرس استفاده می کنیم. تابعی می نویسیم در درون آن add_menu_page
را استفاده می کنیم و در نهایت آن را به admin_menu قلاب می کنیم.
<?php add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $function, $icon_url, $position );
پارامتر های این تابع از قرار زیر هستند:
- page_title : تیتر صفحه تنظیمات که با استفاده از تابع
get_admin_page_title
نمایش داده بشه . - menu_title : عنوان منو که در لیست منوها نمایش داده می شود.
- capability : سطح دسترسی که کاربرانی با اون سطح دسترسی می تونن به صفحه شما دسترسی داشته باشند.در لیست سطوح دسترسی وردپرس موردی داریم تحت عنوان manage_options که بهتره در این مورد از این سطح دسترسی استفاده کنید .
- menu_slug : نامک منو که در لینک به صورت مقداری به پارامتر page افزوده میشه.
- function : این تابع که خروجی پنلی که باید در صفحه جدید نمایش بده رو باید بسازه.
- icon_url: این مورد باید لینک آیکنی که قراره در سمت راست منو نمایش بده رو بگیره. اگر مایل باشید میتونید از لیست dashicon های وردپرس استفاده کنید.در صورتی که قراره تصویر باشه باید لینک مستقیم اون رو قرار بدید و در صورتی که قراره dashicon باشه باید کلاس مربوطه رو اضافه کنید مثلا ‘dashicons-admin-media’.
- position: مکان نمایش منو در پنل ادمین که با استفاده از موارد موجود مقدار دهی میشه.
برای ثبت موقعیت یا همون پارامتر position می تونید از اعداد زیر استفاده کنید.
- 2 – Dashboard
- 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
مثلا اگر عدد مربوطه رو 5 بدید منوی شما بین پیشخوان و نوشته ها نمایش داده میشه.
یک مثال کلی برای افزودن منو با عنوان WPOrg Options به منوی اصلی وردپرس.
<?php function wporg_options_page_html() { // check user capabilities if (!current_user_can('manage_options')) { return; } ?> <div class="wrap"> <?php echo "new panel"; ?> </div> <?php } function wporg_options_page() { add_menu_page( 'WPOrg', 'WPOrg Options', 'manage_options', 'WPOrg_slug', 'wporg_options_page_html', plugin_dir_url(__FILE__) . 'images/icon_wporg.png', 20 ); } add_action('admin_menu', 'wporg_options_page');
در مثال بالا تابع wporg_options_page تابع اصلی هست که به admin_menu قلاب شده و تابع wporg_options_page_html تابعی هست که به خروجی پنل صفحه ای که ساخته شده رو تولید می کنه.
برای حذف منوی اصلی در وردپرس باید از تابع remove_menu_page
استفاده می کنیم و menu_slug رو به عنوان پارامتر بهش میدیم.
<?php remove_menu_page( $menu_slug ); ?>
برای این کار باید تابعی بنویسید و در داخلش از تابع remove_menu_page
استفاده کنید و در آخر اون رو به admin_menu قلاب کنید.
مثال کلی از حذف منو ابزار ها از لیست منوهای وردپرس.
<?php function wporg_remove_options_page() { remove_menu_page('tools.php'); } add_action('admin_menu', 'wporg_remove_options_page', 99);
ساختار Sub-Menu در پنل ادمین وردپرس
برای این کار باید از تابع add_submenu_page
استفاده کنیم. تابعی می نویسیم در درون آن add_submenu_page
را استفاده می کنیم و در نهایت آن را به admin_menu قلاب می کنیم.
<?php add_submenu_page( $parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function );
پارامتر های این تابع از قرار زیر هستند:
- parent_slug : نامک منوی اصلی که در تابع add_menu_page دادیم . اگر قراره به عنوان زیر منویی از منو های پیش فرض وردپرس اضافه بشه می تونید روی اون منو کلیک کنید و slug رو بردارید . به طور مثال slug در منوی تنظیمات برابر options-general.php هست و برای ابزار ها برابر tools.php می باشد.
- سایر موارد مشابه تابع
add_menu_page
می باشد .
لیست parent_slug ها برای منوهای پیش فرض وردپرس :
- add_dashboard_page() – index.php
- add_posts_page() – edit.php
- add_media_page() – upload.php
- add_pages_page() – edit.php?post_type=page
- add_comments_page() – edit-comments.php
- add_theme_page() – themes.php
- add_plugins_page() – plugins.php
- add_users_page() – users.php
- add_management_page() – tools.php
- add_options_page() – options-general.php
- add_options_page() – settings.php
یک مثال کلی برای افزودن یک زیر منو به منوی اصلی ابزار ها در وردپرس
<?php function wporg_options_page_html() { // check user capabilities if (!current_user_can('manage_options')) { return; } ?> <div class="wrap"> <?php echo "settings panel"; ?> </div> <?php } function wporg_options_page() { add_submenu_page( 'tools.php', 'WPOrg Options', 'WPOrg Options', 'manage_options', 'wporg', 'wporg_options_page_html' ); } add_action('admin_menu', 'wporg_options_page');
نکته : اگر در ساخت پلاگین خود از ساختار شی گرایی استفاده می کنید نحوه قلاب کردن تابع به صورتی است که شی کلاس و نام تابع را در قالب آرایه می گیرد.
صباغ جان عالی هستی.
حالا اگر بخواهیم اون بالا یعنی نوار بالای سایت و پنل وردپرس قرار بگیره باید چکار کنیم؟
سلام. از هوک wp_admin_bar استفاده کنید. با جستجوی نام هوک در اینترنت نمونه توابع را می توانید پیدا کنید.