با عرض سلام و وقت به خیر خدمت کاربران سایت پی وی لرن به ویژه کاربرانی که به سیستم مدیریت محتوای قدرتمند وردپرس علاقمند هستند.
به ” دوره متخصص وردپرس ” خوش آمدید!
در این دوره قرار است توسعه و ارتقاء پلاگین های وردپرس را به صورت جامع و کامل بیاموزیم.
فرقی نمی کند که در شرف نوشتن اولین پلاگین خود هستید و یا این که پنجاهمین پلاگین خود را می نویسید! امیدوارم این دوره برایتان مفید باشد.
در این جلسه با آموزش نحوه استفاده از منوهای بالا در ساخت پلاگین رسماً به کار با منوهای مدیریتی پلاگین می پردازیم.
برای افزودن یک منوی جدید سطح بالا به مدیریت وردپرس رفته و از تابع ()add_menu_page استفاده نمایید.
1 2 3 4 5 6 7 8 9 10 | <?php add_menu_page( string $page_title, string $menu_title, string $capability, string $menu_slug, callable $function = '', string $icon_url = '', int $position = null ); |
در این مثال می خواهیم یک منوی جدید سطح بالا به نام “WPOrg” اضافه کنیم.
اولین قدم ایجاد تابعی خواهد بود که به تولید HTML می پردازد.
در این تابع ، بررسی های امنیتی لازم را انجام داده و گزینه هایی را که با استفاده از API تنظیمات ثبت کرده ایم ، ارائه خواهیم داد.
توصیه می کنیم با استفاده از <div> در یک کلاس wrap، اقدام به بستن HTML خود نمایید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <?php function wporg_options_page_html() { // check user capabilities if ( ! current_user_can( 'manage_options' ) ) { return; } ?> <div class="wrap"> <h1><?php esc_html( get_admin_page_title() ); ?></h1> <form action="options.php" method="post"> <?php // output security fields for the registered setting "wporg_options" settings_fields( 'wporg_options' ); // output setting sections and their fields // (sections are registered for "wporg", each field is registered to a specific section) do_settings_sections( 'wporg' ); // output save settings button submit_button( 'Save Settings' ); ?> </form> </div> <?php } ?> |
مرحله دوم ثبت نام در فهرست WPOrg است.
ثبت نام باید در طول هوک اکشن admin_menu رخ دهد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php function wporg_options_page() { add_menu_page( 'WPOrg', 'WPOrg Options', 'manage_options', 'wporg', 'wporg_options_page_html', plugin_dir_url(__FILE__) . 'images/icon_wporg.png', 20 ); } add_action( 'admin_menu', 'wporg_options_page' ); ?> |
بهترین روش برای کد قابل حمل ، ایجاد یک تابع فراخوان است که به فایل PHP شما نیاز دارد.
به منظور کامل بودن و کمک به شما در درک انتقال کد ها، روش دیگری را نشان خواهیم داد:
عبور از یک مسیر پرونده PHP به عنوان پارامتر menu_slug$ با یک پارامتر null $function.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php function wporg_options_page() { add_menu_page( 'WPOrg', 'WPOrg Options', 'manage_options', plugin_dir_path(__FILE__) . 'admin/view.php', null, plugin_dir_url(__FILE__) . 'images/icon_wporg.png', 20 ); } add_action( 'admin_menu', 'wporg_options_page' ); ?> |
برای حذف یک منوی ثبت شده از مدیریت وردپرس ، از تابع ()remove_menu_page استفاده کنید.
حذف منوها مانع دسترسی مستقیم کاربران به آنها نمی شود.
1 2 3 4 5 | <?php remove_menu_page( string $menu_slug ); ?> |
نباید هرگز از این روش به عنوان روشی برای محدود کردن قابلیت های کاربر استفاده کرد.
در این مثال می خواهیم منوی “Tools” را حذف کنیم.
1 2 3 4 5 6 | <?php function wporg_remove_options_page() { remove_menu_page( 'tools.php' ); } add_action( 'admin_menu', 'wporg_remove_options_page', 99 ); ?> |
اطمینان حاصل کنید که منو قبل از حذف ، در هوک admin_menu ثبت شده است.
یک شماره اولویت بالاتر برای ()add_action تعیین کنید.
برای پردازش ارسال فرم ها در صفحات مربوط به گزینه ها ، به دو چیز نیاز دارید:
تنها در صورت بروز مشکل در back-end این مراحل را دنبال کنید.
برای این کار توصیه می شود به Settings API مراجعه نمایید.
به عنوان اولین پارامتر menu_page_url () از پارامتر menu_slug$ از صفحه گزینه ها استفاده کنید.
با استفاده از این تابع به طور خودکار از URL فرار کرده و به طور پیش فرض آن را تکرار می کنید.
بنابراین می توانید مستقیماً از آن در تگ <form> استفاده کنید :
1 | <form action="<?php menu_page_url( 'wporg' ) ?>" method="post"> |
آموزش استفاده از منوهای بالا در ساخت پلاگین را با پردازش فرم ها به پایان می بریم.
function$ را که هنگام افزودن به صفحه مشخص می کنید فقط یک بار برای نمایش در صفحه فراخوانی می شود.
این کار در هنگام ارسال هدرها ممکن است موجب دردسر شود.
برای مثال موجب ارسال (ریدایرکت ها) به مرورگر می شود.
add_menu_page یک hookname$ را بازگردانی کرده و وردپرس اکشن “load-$hookname” را قبل از هر گونه خروجی HTML بازگردانی می کند.
می توانید از این کار برای اختصاص یک تابع استفاده کنید که می تواند فرم را پردازش کند.
حتی اگر فرم ارسال نشده باشد؛ “load-$hookname” بارها قبل از صفحه گزینه ها نمایش داده خواهد شد.
به خاطر پارامتر بازگردانی شده و اکشن در mind، مثال بالا به صورت زیر خواهد بود :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | function wporg_options_page() { $hookname = add_menu_page( 'WPOrg', 'WPOrg Options', 'manage_options', 'wporg', 'wporg_options_page_html', plugin_dir_url(__FILE__) . 'images/icon_wporg.png', 20 ); add_action( 'load-' . $hookname, 'wporg_options_page_submit' ); } add_action( 'admin_menu', 'wporg_options_page' ); |
می توانید متناسب با نیاز خود wporg_options_page_submit را برنامه ریزی کنید.
اما به خاطر داشته باشید که باید تمام بررسی های لازم را بصورت دستی انجام دهید ، از جمله :
در این جلسه با نحوه استفاده از منوهای بالا در ساخت پلاگین آشنا شدیم.
در جلسه بعد کار با منوهای مدیریتی را با استفاده از منوهای فرعی در ساخت پلاگین ادامه می دهیم.
با پی وی لرن همراه باشدی