تعداد بازدید: 2558

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');

نکته : اگر در ساخت پلاگین خود از ساختار شی گرایی استفاده می کنید نحوه قلاب کردن تابع به صورتی است که شی کلاس و نام تابع را در قالب آرایه می گیرد.

مطالب مشابه

آموزش نکات و تکنیک های برنامه نویسی وردپرس

Rest API در وردپرس

سرور ها می توانند پاسخ مناسب به درخواست ها بدهند. درخواست ها و پاسخ یک سری ویژگی ها و داده همراه خود دارند. کدی که در...

اشتراک گذاری :

مدیر وب سایت گنوتک . برنامه نویسی رو با زبان C در هفده سالگی شروع کردم . در حال حاضر به برنامه نویسی php برپایه معماری MVC , HMVC و همچنین سیستم مدیریت محتوای WordPress و فریم ورک محبوب لاراول علاقه مند هستم و دوست دارم اطلاعاتم رو با شما به اشتراک بگذارم.

3 دیدگاه برای Administration Menus در وردپرس

  1. حالا اگر بخواهیم اون بالا یعنی نوار بالای سایت و پنل وردپرس قرار بگیره باید چکار کنیم؟

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *