با عرض سلام خدمت کاربران محترم سایت پی وی لرن.
با جلسه ای دیگر از سری جلسات دوره جامع آموزش ساخت قالب وردپرس در خدمت شما هستیم.
در این جلسه قصد داریم به آموزش ساخت ابزارک در وردپرس (Widget) بپردازیم.
یک ابزارک محتوا و ویژگی هایی را به ناحیه ابزارک ها که سایدبار نیز نامیده میشود، اضافه میکند.
ابزارک ها روشی را فراهم میکنند تا کاربران بتوانند سایت خود را سفارشی تر کنند
قالب شما ممکن است دارای یک یا چندین ناحیه ابزارک یا همان سایدبار باشد.
یک ابزارک در واقع یک شئ در زبان PHP است که کدهای HTML را خروجی میدهد.
هنگامی که شما یک ابزارک جدید ایجاد میکنید، آن ابزارک در صفحه ادمین در Appearance > Widgets نمایش داده میشود.
در این قسمت نیز کاربر میتواند ابزارک را به سایدبار اضافه کند و تنظیمات ان را تغییر دهد.
وردپرس تعدادی ابزارک پیشفرض دارد که در پنل مدیریت ابزارک ها در دسترس هستند.
علاوه بر این ابزارک ها، ما میتوانیم ابزارک های خود را با استفاده از قالب ها و یا پلاگین ها ایجاد کنیم.
مزیت این نوع ابزارک ها (سفارشی) در این است که میتوان ویژگی های اضافی و سفارشی شده ای را میتوان پیاده سازی کرد.
اما ابزارک های ساخته شده توسط پلاگین ها یا قالب معایبی هم دارند. برای مثال اگر پلاگین یا قالب غیرفعال شوند، ابزارک های آن ها نیز از دست خواهند رفت.
از نظر دیداری، یک ابزارک را میتوان به دو بخش تقسیم کرد:
برای مثال، تصویر زیر ابزارک پیشفرض Text را در پنل ابزارک ها نمایش میدهد:
که در سایت به صورت زیر نمایش داده میشود:
کد HTML خروجی این ابزارک به صورت زیر است:
1 2 3 4 5 6 7 8 9 10 11 | <div id="text-7" class="widget widget_text"> <!-- Widget Container --> <div class="widget-wrap"> <h4 class="widgettitle">This is a text widget</h4> <!-- Title --> <div class="textwidget"> <!-- Content of Widget --> I can put HTML in here. <a href="http://google.com/">Search me!</a> </div> </div> </div> |
برای ساخت و استفاده از یک ابزارک مراحل زیر را انجام دهید:
کلاسی که برای ساخت ابزارک ایجاد میکنید، باید مانند کد زیر و شامل توابع کلاس WP_Widget باشد:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <?php class My_Widget extends WP_Widget { public function __construct() { // actual widget processes } public function widget( $args, $instance ) { // outputs the content of the widget } public function form( $instance ) { // outputs the options form in the admin } public function update( $new_instance, $old_instance ) { // processes widget options to be saved } } ?> |
در بخش زیر هر تابع را توضیح میدهیم:
کد کامل ساخت ابزارک Text که در بالا ان را مثال زدیم، به صورت زیر خواهد بود:
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 | <?php class My_Widget extends WP_Widget { function __construct() { parent::__construct( 'my-text', // Base ID 'My Text' // Name ); add_action( 'widgets_init', function() { register_widget( 'My_Widget' ); }); } public $args = array( 'before_title' => '<h4 class="widgettitle">', 'after_title' => '</h4>', 'before_widget' => '<div class="widget-wrap">', 'after_widget' => '</div></div>' ); public function widget( $args, $instance ) { echo $args['before_widget']; if ( ! empty( $instance['title'] ) ) { echo $args['before_title'] . apply_filters( 'widget_title', $instance['title'] ) . $args['after_title']; } echo '<div class="textwidget">'; echo esc_html__( $instance['text'], 'text_domain' ); echo '</div>'; echo $args['after_widget']; } public function form( $instance ) { $title = ! empty( $instance['title'] ) ? $instance['title'] : esc_html__( '', 'text_domain' ); $text = ! empty( $instance['text'] ) ? $instance['text'] : esc_html__( '', 'text_domain' ); ?> <p> <label for="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>"><?php echo esc_html__( 'Title:', 'text_domain' ); ?></label> <input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'title' ) ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>"> </p> <p> <label for="<?php echo esc_attr( $this->get_field_id( 'Text' ) ); ?>"><?php echo esc_html__( 'Text:', 'text_domain' ); ?></label> <textarea class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'text' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'text' ) ); ?>" type="text" cols="30" rows="10"><?php echo esc_attr( $text ); ?></textarea> </p> <?php } public function update( $new_instance, $old_instance ) { $instance = array(); $instance['title'] = ( !empty( $new_instance['title'] ) ) ? strip_tags( $new_instance['title'] ) : ''; $instance['text'] = ( !empty( $new_instance['text'] ) ) ? $new_instance['text'] : ''; return $instance; } } $my_widget = new My_Widget(); ?> |
همانطور که در جلسه قبل نیز گفتیم، برای فعال کردن ابزارک از تابع ()register_widget استفاده میکنیم.
1 2 3 4 5 6 7 | <?php add_action( 'widgets_init', 'wpdocs_register_widgets' ); function wpdocs_register_widgets() { register_widget( 'My_Widget' ); } ?> |
جلسه ساخت ابزارک در وردپرس نیز به پایان رسید.
در جلسه بعد به آموزش ساخت منو در وردپرس خواهیم پرداخت.