ایجاد ابزارک
نحوه ایجاد و رجیستر ابزارک در این جلسه بحث خواهد شد.
درمثال زیر فیلد Text محتوای وارد شده توسط ابزارک را درقالب نمایش می دهد.

بعد از پیکربندی فایل های افزونه که در جلسات گذشته توضیح داده شد، فایل جدیدی ایجاد کنید برای مثال: WPVAR_Widget.class.php
داخل فایل کلاس خودمان را به کلاس WP_Widget اضافه میکنیم:
<?php // اضافه کردن کلاس به کلاس ابزارک وردپرس class WPVAR_Widget extends WP_widget { // محل قرار گرفتن فانکش ها } ?>
برای ساخت ابزارک فقط به چهار فانکشن زیر داخل کلاس نیاز داریم:
- __construct
- widget
- form
- update
ساختار کلی ساختار کلی
ساختار کلی فایل به این شکل می باشد:
<?php // اضافه کردن کلاس به کلاس ابزارک وردپرس class WPVAR_Widget extends WP_widget { public function __construct() { // مشخصات ابزارک } public function widget($args, $instance) { // کدهایی که مسئول نمایش ابزارک به کاربران در قالب می باشند } public function form($instance) { // فرم ابزارک که در صفحه تنظیمات ابزارک نمایش داده خواهد شد } public function update($new_instance, $old_instance) { // ذخیره اطلاعات وارد شده در فانکش فرم } }
رجیستر ابزارک رجیستر ابزارک
فانکش construct مشخصات ابزارک را ثبت می کند. محتویات فانکشن برای ثبت ابزارک:
public function __construct() { $widget_ops = array( 'classname' => 'wpvar_widget_entries', // نام کلاس ابزارک 'description' => esc_attr__('اولین ابزارک من', 'wpvar-widget'), // توضیحات ابزارک 'customize_selective_refresh' => true, ); parent::__construct('wprand-widget', esc_attr__('ابزارک من', 'wpvar-widget'), $widget_ops); // نام ابزارک $this->alt_option_name = 'wpvar_widget'; add_action('widgets_init', function () { register_widget('WPVAR_Widget'); // ثبت ابزارک با نام کلاس }); }
صفحه تنظیمات ابزارک صفحه تنظیمات ابزارک
در این مثال ابزارک ما فیلد متن را برای کاربران نمایش می دهد. پس لازم است در صفحه تنظیمات ابزارک فرم مربوط به متن فیلد به مدیر وردپرس نمایش داده شود تا متن دلخواه خود را وارد کند:
public function form( $instance ) { if ( isset( $instance[ 'title' ] ) ) { $title = $instance[ 'title' ]; } else { $title = __( 'عنوان تنظیمات ابزارک', 'wpvar-widget' ); // عنوان گزنه فیلد متن } ?> <p> <label for="<?php echo $this->get_field_name( 'title' ); ?>"><?php _e( 'عنوان:' ); ?></label> <input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>" /> </p> <?php }
فانکشن update تنظیمات وارد شده در فانکش فرم را ذخیره می کند:
public function update( $new_instance, $old_instance ) { $instance = array(); $instance['title'] = ( !empty( $new_instance['title'] ) ) ? strip_tags( $new_instance['title'] ) : ''; return $instance; }
نمایش در قالب نمایش در قالب
و درنهایت فانکشنی که ابزارک و محتویاتش را در قالب به کاربر نمایش می دهد:
public function widget( $args, $instance ) { extract( $args ); $title = apply_filters( 'widget_title', $instance['title'] ); echo $before_widget; if ( ! empty( $title ) ) { echo $before_title . $title . $after_title; // نمایش متن وارد شده در تنظیمات ابزارک } echo __( 'اولین ابزارک من', 'wpvar-widget' ); echo $after_widget; }
نمونه کد نمونه کد
کد نهایی:
<?php // اضافه کردن کلاس به کلاس ابزارک وردپرس class WPVAR_Widget extends WP_widget { public function __construct() { $widget_ops = array( 'classname' => 'wpvar_widget_entries', // نام کلاس ابزارک 'description' => esc_attr__('اولین ابزارک من', 'wpvar-widget'), // توضیحات ابزارک 'customize_selective_refresh' => true, ); parent::__construct('wprand-widget', esc_attr__('ابزارک من', 'wpvar-widget'), $widget_ops); // نام ابزارک $this->alt_option_name = 'wpvar_widget'; add_action('widgets_init', function () { register_widget('WPVAR_Widget'); // ثبت ابزارک با نام کلاس }); } public function widget( $args, $instance ) { extract( $args ); $title = apply_filters( 'widget_title', $instance['title'] ); echo $before_widget; if ( ! empty( $title ) ) { echo $before_title . $title . $after_title; // نمایش متن وارد شده در تنظیمات ابزارک } echo __( 'اولین ابزارک من', 'wpvar-widget' ); echo $after_widget; } public function form( $instance ) { if ( isset( $instance[ 'title' ] ) ) { $title = $instance[ 'title' ]; } else { $title = __( 'عنوان تنظیمات ابزارک', 'wpvar-widget' ); // عنوان گزنه فیلد متن } ?> <p> <label for="<?php echo $this->get_field_name( 'title' ); ?>"><?php _e( 'عنوان:' ); ?></label> <input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>" /> </p> <?php } public function update( $new_instance, $old_instance ) { $instance = array(); $instance['title'] = ( !empty( $new_instance['title'] ) ) ? strip_tags( $new_instance['title'] ) : ''; return $instance; } }
فراموش نکنید که در فایل اصلی ابزارک، فایل کلاس را فراخوانی کنید:
if (! class_exists('WPVAR_Widget')) { include plugin_dir_path(__FILE__) . 'inc/WPVAR_Widget.class.php'; } new WPWAR_Widget();
خبرنامه وردپرس فارسی
برای باخبر شدن از آخرین آموزش های رایگان و اخبار وردپرس، با وارد کردن ایمیل خود عضو خبرنامه ما شوید
با موفقیت مشترک شدید!