با عرض سلام و وقت به خیر خدمت کاربران سایت پی وی لرن به ویژه کاربرانی که به سیستم مدیریت محتوای قدرتمند وردپرس علاقمند هستند.
به ” دوره متخصص وردپرس ” خوش آمدید!
در این دوره قرار است توسعه و ارتقاء پلاگین های وردپرس را به صورت جامع و کامل بیاموزیم.
فرقی نمی کند که در شرف نوشتن اولین پلاگین خود هستید و یا این که پنجاهمین پلاگین خود را می نویسید! امیدوارم این دوره برایتان مفید باشد.
در جلسه گذشته با انواع آپشن ها یا گزینه های API مورد نیاز برای ساخت پلاگین وردپرس آشنا شدیم.
در این جلسه ” آشنایی با تنظیمات سفارشی صفحه در ساخت پلاگین ” به علاقمندان این دوره ارائه می شود.
ایجاد یک صفحه تنظیمات سفارشی شامل ترکیبی از: ایجاد منوی مدیریت ، استفاده از تنظیمات API و گزینه های API است.
لطفاً قبل از اقدام به ساخت API خود این جلسه یعنی – آشنایی با تنظیمات سفارشی صفحه در ساخت پلاگین – را مطالعه کنید.
مثال زیر می تواند به عنوان مرجع سریعی برای یادگیری API استفاده شود.
مثال زیر به عنوان کامل ترین مثال یادگیری API یک منوی سطح بالا به نام WPOrg اضافه می کند.
گزینه سفارشی به نام wporg_options را ثبت می کند.
سپس با استفاده از تنظیمات API و گزینه های API (شامل نشان دادن پیام های خطا / بروزرسانی) گزینه سفارشی به نام wporg_options را ثبت می کند.
علاوه بر این آپشن های API آن شامل (ایجاد ، خواندن ، به روزرسانی و حذف پیام ها) می شود.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 | <?php /** * @internal never define functions inside callbacks. * these functions could be run multiple times; this would result in a fatal error. */ /** * custom option and settings */ function wporg_settings_init() { // register a new setting for "wporg" page register_setting( 'wporg', 'wporg_options' ); // register a new section in the "wporg" page add_settings_section( 'wporg_section_developers', __( 'The Matrix has you.', 'wporg' ), 'wporg_section_developers_cb', 'wporg' ); // register a new field in the "wporg_section_developers" section, inside the "wporg" page add_settings_field( 'wporg_field_pill', // as of WP 4.6 this value is used only internally // use $args' label_for to populate the id inside the callback __( 'Pill', 'wporg' ), 'wporg_field_pill_cb', 'wporg', 'wporg_section_developers', [ 'label_for' => 'wporg_field_pill', 'class' => 'wporg_row', 'wporg_custom_data' => 'custom', ] ); } /** * register our wporg_settings_init to the admin_init action hook */ add_action( 'admin_init', 'wporg_settings_init' ); /** * custom option and settings: * callback functions */ // developers section cb // section callbacks can accept an $args parameter, which is an array. // $args have the following keys defined: title, id, callback. // the values are defined at the add_settings_section() function. function wporg_section_developers_cb( $args ) { ?> <p id="<?php echo esc_attr( $args['id'] ); ?>"><?php esc_html_e( 'Follow the white rabbit.', 'wporg' ); ?></p> <?php } // pill field cb // field callbacks can accept an $args parameter, which is an array. // $args is defined at the add_settings_field() function. // wordpress has magic interaction with the following keys: label_for, class. // the "label_for" key value is used for the "for" attribute of the <label>. // the "class" key value is used for the "class" attribute of the <tr> containing the field. // you can add custom key value pairs to be used inside your callbacks. function wporg_field_pill_cb( $args ) { // get the value of the setting we've registered with register_setting() $options = get_option( 'wporg_options' ); // output the field ?> <select id="<?php echo esc_attr( $args['label_for'] ); ?>" data-custom="<?php echo esc_attr( $args['wporg_custom_data'] ); ?>" name="wporg_options[<?php echo esc_attr( $args['label_for'] ); ?>]" > <option value="red" <?php echo isset( $options[ $args['label_for'] ] ) ? ( selected( $options[ $args['label_for'] ], 'red', false ) ) : ( '' ); ?>> <?php esc_html_e( 'red pill', 'wporg' ); ?> </option> <option value="blue" <?php echo isset( $options[ $args['label_for'] ] ) ? ( selected( $options[ $args['label_for'] ], 'blue', false ) ) : ( '' ); ?>> <?php esc_html_e( 'blue pill', 'wporg' ); ?> </option> </select> <p class="description"> <?php esc_html_e( 'You take the blue pill and the story ends. You wake in your bed and you believe whatever you want to believe.', 'wporg' ); ?> </p> <p class="description"> <?php esc_html_e( 'You take the red pill and you stay in Wonderland and I show you how deep the rabbit-hole goes.', 'wporg' ); ?> </p> <?php } /** * top level menu */ function wporg_options_page() { // add top level menu page add_menu_page( 'WPOrg', 'WPOrg Options', 'manage_options', 'wporg', 'wporg_options_page_html' ); } /** * register our wporg_options_page to the admin_menu action hook */ add_action( 'admin_menu', 'wporg_options_page' ); /** * top level menu: * callback functions */ function wporg_options_page_html() { // check user capabilities if ( ! current_user_can( 'manage_options' ) ) { return; } // add error/update messages // check if the user have submitted the settings // wordpress will add the "settings-updated" $_GET parameter to the url if ( isset( $_GET['settings-updated'] ) ) { // add settings saved message with the class of "updated" add_settings_error( 'wporg_messages', 'wporg_message', __( 'Settings Saved', 'wporg' ), 'updated' ); } // show error/update messages settings_errors( 'wporg_messages' ); ?> <div class="wrap"> <h1><?php echo esc_html( get_admin_page_title() ); ?></h1> <form action="options.php" method="post"> <?php // output security fields for the registered setting "wporg" settings_fields( 'wporg' ); // 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 } |
در این جلسه با تنظیمات سفارشی صفحه در ساخت پلاگین آشنا شدیم.
سر فصل Settings (تنظیمات) در ساخت پلاگین وردپرس به پایان رسید.
در جلسه بعدی به مبحث Metadata متادیتا ها در ساخت پلاگین می پردازیم.
با پی وی لرن همراه باشید.