دوستان سلام.
توجه : در این آموزش , منظور از منو , منوهایی است که در سمت بک اند back end سایت وردپرسی ساخته می شوند نه در سمت فرانت اند front end.
همان طور که می دانید منوها کاربردهای فراوانی در نمایش اطلاعات مهم و دسترسی دادن به بخش های مهم افزونه ها و پوسته های وردپرس دارند و هر برنامه نویسی برای پلاگین و قالب خود حتما یک منو در نظر می گیرد تا کاربر از از طریق آن به بخش تنظیمات و سایر بخش ها دسترسی داشته باشد.
در آموزش امروز می خواهیم نحوه ی برنامه نویسی منو در پیشخوان وردپرس را به شما آموزش دهیم..
برای ایجاد منو از کدام هوک استفاده می شود؟
برای ساخت منو لازم است که به اکشن admin_menu هوک بزنید و در صورتی که به چند زیر منو نیز نیاز دارید لازم است که به تعداد زیر منو ها نیز به این اکشن هوک بزنید ( اگر با مبحث هوک ها در وردپرس آشنایی ندارید این آموزش را بخوانید : آشنایی با هوک ها در وردپرس ).
فرض کنید که می خواهیم یک منو همراه با یک زیر منو در وردپرس ایجاد کنیم.
در این صورت ابتدا به اکشن admin_menu هوک می زنیم :
[php]
add_action(‘admin_menu’,’adib_menu_page’);
[/php]
سپس تابع کال بک call back را می نویسیم :
[php]
function adib_menu_page(){
add_menu_page(
‘my test menu ‘,
‘my test menu ‘,
‘manage_options’,
‘adib_simple_plugin’,
function(){},
”,
85
);
}//end of function adib_menu_page
[/php]
همان طور که ملاحظه می فرمایید ما در تابع کال بک , یک تابع دیگر به نام add_menu_page فراخوانده ایم و به آن چند آرگومان داده ایم.
اکنون به شرح آرگومان های این تابع می پردازیم :
اولین آرگومان یعنی my test menu , عنوان صفحه را تعین می کند.
دومین آرگومان یعنی my test menu عنوان منو ( همان نامی که در پیشخوان نمایش داده می شود ) است.
سومین آرگومان که با نام capability نیز شناخته می شود قابلیت و اختیارات کسی که به منو دسترسی دارد را تعین می کند. معمولا برای این آرگومان , عبارت manage_options را قید می کنند .
چهارمین آرگومان , اسلاگ منو را تعین می کند. اسلاگ همان عبارتی است که در نوار آدرس مرورگر پس از آدرس سایت و علامت اسلش “/” می بینید.
پنجمین آرگومان , نام تابع کال بک مربوط به add_menu_page را تعین می کند ( با کال بک اکشن admin_menu اشتباه نشود ). شما می توانید برای این آرگومان نام تابع مربوطه را وارد کنید یا این که از یک تابع ناشناس Anonymous استفاده کنید ( همان کاری که ما در کد بالا کردیم ).
ششمین آرگومان , نشانی اینترنتی آیکون منو را تعین می کند.
هفتمین آرگومان , موقعیت و جایگاه منو را در پیشخوان وردپرس تعین می کند ( در کد بالا : 85 ).
حالا وقت آن رسیده که کد بالا را امتحان کنیم.
برای این کار کد بالا را کپی و سپس در فایل functions.php پوسته یا در فایل اصلی یک افزونه پیست کنید.
اگر همه چیز را درست انجام داده باشید یک منو به نام my test menu در پیشخوان شما نزدیک انتهای صفحه ایجاد می شود.
روی لینک منو کلیک کنید. بعد از باز شدن لینک مشاهده می کنید که در نوار آدرس مرورگر , یک اسلاگ به صورت adib_simple_plugin در انتهای آدرس ایجاد شده است.
این اسلاگ نقش مهمی در قرار گرفتن زیرمنوها تحت منوی اصلی ایفا می کند.
صفحه ای که اکنون باز شده , خالی است اما می توانید به آن کد اضافه کنید.
برای این کار کافی است که در پنجمین آرگومان که یک تابع ناشناس است کدهای خود را بنویسید. مثلا ما کد زیر را می نویسیم :
[php]
echo ‘
<h1>this is my first menu</h1>
‘;
[/php]
در این صورت بعد از کلیک روی لینک منو عبارت بالا در صفحه ی منو چاپ می شود.
اما اگر بخواهیم یک زیر منو به منوی ایجاد شده اضافه کنیم می توانیم در تابع ناشناس بالا کدی اضافه نکنیم و کد مربوطه را در زیر منو ایجاد کنیم.
برای افزودن زیرمنو , یک بار دیگر به اکشن admin_menu هوک می زنیم :.
[php]
add_action(‘admin_menu’,’adib_first_sub_menu_page’);
function adib_first_sub_menu_page(){
add_submenu_page(
‘adib_simple_plugin’,
‘this is submenu’,
‘this is submenu’,
‘manage_options’,
‘adib_simple_plugin’,
function(){ echo ‘this is submenu’;},
85
);
}//end of function adib_first_sub_menu_page
[/php]
همان طور که ملاحظه می فرمایید ما در کال بک بالا تابع add_submenu_page را فراخوانده ایم که به اختصار آرگومان ها و نکات مهم آن را شرح می دهیم :
اولین آرگومان این تابع parent_slug است که باید آن را با اسلاگ منو برابر قرار دهید یعنی هر دو را adib_simple_plugin قرار دهید.
پنجمین آرگومان submenu_slug است که شما می توانید برای آن یک عبارت منحصر به فرد و یا عبارت یکسان با اسلاگ منو قرار دهید.
به این ترتیب یک منو و زیر منو در پیشخوان وردپرس ایجاد می شود و شما می توانید از آن ها در پروژه های برنامه نویسی خود استفاده کنید.
در پایان اگر سوالی بود پاسخگوی شما عزیزان هستیم.