Widgets là một trong những tiện ích không thể thiếu cho một trang WordPress, nó giúp chúng ta hiển thị nội dung theo ý muốn ở những vị trí khác nhau có trong theme. Mặc định thì WordPress hỗ trợ cho chúng ta một vài widget phổ biến như hiển thị những bài viết mới nhất… Ngoài ra chúng ta cũng có thể cài thêm plugin để có nhiều Widget khác nhau. Tuy nhiên, sẽ có những lúc các bạn sẽ cần phải tự tay tạo riêng cho mình một Widget để hiển thị nội dung nào đó.
Trong bài viết ngày hôm nay, mình xin chia sẻ cho các bạn một mẫu (template) widget cơ bản, và dựa vào mẫu này, các bạn có thể tạo riêng cho mình một widget, chỉ việc thay đổi tên cũng như chức năng mà các bạn cần có cho một Widget.
Các bạn chỉ cần copy đoạn code bên dưới vào file functions.php hoặc tạo một file và bỏ nó vào folder plugins là có thể tạo một widget.
<?php
/**
* Example Widget Class
*/
class example_widget extends WP_Widget {
/** constructor -- name this the same as the class above */
function example_widget() {
parent::WP_Widget(false, $name = 'Example Text Widget');
}
/** @see WP_Widget::widget -- do not rename this */
function widget($args, $instance) {
extract( $args );
$title = apply_filters('widget_title', $instance['title']);
$message = $instance['message'];
?>
<?php echo $before_widget; ?>
<?php if ( $title )
echo $before_title . $title . $after_title; ?>
<ul>
<li><?php echo $message; ?></li>
</ul>
<?php echo $after_widget; ?>
<?php
}
/** @see WP_Widget::update -- do not rename this */
function update($new_instance, $old_instance) {
$instance = $old_instance;
$instance['title'] = strip_tags($new_instance['title']);
$instance['message'] = strip_tags($new_instance['message']);
return $instance;
}
/** @see WP_Widget::form -- do not rename this */
function form($instance) {
$title = esc_attr($instance['title']);
$message = esc_attr($instance['message']);
?>
<p>
<label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></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 $title; ?>" />
</p>
<p>
<label for="<?php echo $this->get_field_id('message'); ?>"><?php _e('Simple Message'); ?></label>
<input class="widefat" id="<?php echo $this->get_field_id('message'); ?>" name="<?php echo $this->get_field_name('message'); ?>" type="text" value="<?php echo $message; ?>" />
</p>
<?php
}
} // end class example_widget
add_action('widgets_init', create_function('', 'return register_widget("example_widget");'));
?>
Nếu các bạn muốn thay đổi tên Widget theo ý mình, thì chỉ việc thay đổi tên example_widget thành bất kì tên gì mà các bạn muốn, còn những tên khác như là : function widget(), function update()… thì không nên đổi tên nhá.
Nếu có gì chưa hiểu từ widget template này, các bạn đừng ngần ngại để lại lời nhắn dưới dạng comments. Mình sẽ giúp các bạn tạo widget từ mẫu này.
Chúc các bạn thành công !