🔥 کمپین سال عزتتا پایان اردیبهشت ادامه دارد (در این روزهای سخت در کنار شما هستیم)
۰ ثانیه
۰ دقیقه
۰ ساعت
۰ سعید مرادی
مستند Menu API در وردپرس
جامعه وردپرس (برنامه نویسی) ایجاد شده در ۲۹ اردیبهشت ۱۴۰۵

Menu API به شما امکان افزودن منوهای سفارشی به پنل مدیریت وردپرس را می‌دهد.
در این مطلب تمام مواردی که از API منو میدونم رو مینویسم. اگر مواردی بود که نیاز به اصلاح داشت یا موردی رو فراموش کردم بنویسید.

۱. تابع add_menu_page() - منوی سطح بالا

منوی اصلی در سایدبار ادمین ایجاد می‌کند.

add_action('admin_menu', 'my_custom_menu');
function my_custom_menu() {
    add_menu_page(
        'صفحه مدیریت من',
        'مدیریت من',
        'manage_options',
        'my-page',
        'my_page_content',
        'dashicons-admin-generic',
        25
    );
}
function my_page_content() {
    echo '<div class="wrap"><h1>محتوای صفحه</h1></div>';
}

۲. تابع add_submenu_page() - زیرمنو

زیرمنو برای منوهای موجود ایجاد می‌کند. برای فعال‌سازی خودکار اولین زیرمنو، اسلاگ زیرمنو را برابر با اسلاگ منوی اصلی قرار دهید.
 

add_action('admin_menu', 'my_submenus');
function my_submenus() {
    // منوی اصلی
    add_menu_page('مدیریت اصلی', 'مدیریت', 'manage_options', 'main-slug', 'main_func');
    // زیرمنوها
    add_submenu_page('main-slug', 'داشبورد', 'داشبورد', 'manage_options', 'main-slug', 'main_func');
    add_submenu_page('main-slug', 'تنظیمات', 'تنظیمات', 'manage_options', 'settings-slug', 'settings_func');
    add_submenu_page('main-slug', 'گزارشات', 'گزارشات', 'manage_options', 'reports-slug', 'reports_func');
}
function main_func() {
    echo '<h1>داشبورد مدیریت</h1>';
    echo '<p>به داشبورد مدیریت خوش آمدید</p>';
}
function settings_func(){
    echo ' <h1>تنظیمات پیشرفته</h1>';
}
function reports_func(){
    echo '<h1>تنظیمات گزارشات</h1>';
}

۳. add_options_page() - منوی تنظیمات

منو را به بخش تنظیمات (Settings) اضافه می‌کند.

add_action('admin_menu', 'my_settings_menu');
function my_settings_menu() {
    add_options_page(
        'تنظیمات پلاگین من',
        'پلاگین من',
        'manage_options',
        'my-plugin-settings',
        'my_plugin_settings_page'
    );
}
function my_plugin_settings_page() {
    ?>
    <div class="wrap">
        <h1>تنظیمات پلاگین من</h1>
        <form method="post">
            <input type="text" name="my_field">
            <?php submit_button('ذخیره'); ?>
        </form>
    </div>
    <?php
}

۴. add_management_page() - منوی ابزارها

منو را به بخش ابزارها (Tools) اضافه می‌کند.

add_action('admin_menu', 'my_tools_menu');
function my_tools_menu() {
    add_management_page(
        'ابزار پاکسازی دیتابیس',
        'پاکسازی دیتابیس',
        'manage_options',
        'db-cleaner',
        'db_cleaner_page'
    );
}
function db_cleaner_page() {
    echo '<div class="wrap"><h1>پاکسازی دیتابیس</h1>';
    echo '<button class="button button-primary">شروع پاکسازی</button></div>';
}

۵. add_theme_page() - منوی ظاهر

منو را به بخش ظاهر (Appearance) اضافه می‌کند.

add_action('admin_menu', 'my_theme_settings');
function my_theme_settings() {
    add_theme_page(
        'تنظیمات اختصاصی قالب',
        'تنظیمات قالب',
        'edit_theme_options',  // سطح دسترسی مخصوص ظاهر
        'theme-settings',
        'theme_settings_page'
    );
}
function theme_settings_page() {
    echo '<div class="wrap"><h1>تنظیمات قالب</h1>';
    echo '<input type="text" placeholder="رنگ اصلی">';
    echo '<button>ذخیره</button></div>';
}

حذف منو

add_action('admin_menu', 'remove_default_menus', 999);
function remove_default_menus() {
    remove_menu_page('edit.php');           // پست‌ها
    remove_menu_page('upload.php');         // رسانه
    remove_menu_page('edit-comments.php');  // نظرات
    remove_menu_page('tools.php');          // ابزارها
    remove_menu_page('options-general.php');// تنظیمات
}
c

حذف زیرمنو

remove_submenu_page('plugins.php', 'plugin-editor.php');  // حذف ویرایشگر پلاگین
remove_submenu_page('themes.php', 'theme-editor.php');    // حذف ویرایشگر قالب

تغییر عنوان منو

add_action('admin_menu', 'rename_menu_items', 999);
function rename_menu_items() {
    global $menu;
    $menu[5][0] = 'مطالب جدید';  // تغییر عنوان پست‌ها
}