Tạo widget tùy chỉnh trong WordPress

Widget là khu vực giúp cho người sử dụng WordPress thêm thành phần hiển thị vào website. Phần này thường dành cho khu vực sidebar hoặc Footer. Bạn hoàn toàn có thể tự tạo cho mình một widget kéo thả bằng cách sử dụng lớp WP_Widget của WordPress.

Sau đây mình sẽ hướng dẫn bạn xây dựng một widget qua các bước đơn giản sau:

Cấu trúc để khởi tạo widget

class Custom_New_Widget extends WP_Widget {
   public function __construct() {}
   public function form( $instance ) {}
   public function update( $new_instance, $old_instance ) {}
   public function widget( $args, $instance ) {}
}
// Đăng ký widget
function register_new_widget() {
register_widget( 'Custom_New_Widget' );
}
add_action( 'widgets_init', 'register_new_widget' );

Với cấu trúc bạn sẽ thấy nó sử dụng class trong PHP. Để rõ hơn bạn có thể tìm hiểu về hướng đối tượng PHP (OOP).

Trong class sẽ có:

  • Hàm __construct dùng để khởi tạo đối tượng
  • Hàm form hiển thị form để người dùng nhập vào
  • Hàm update để cập nhật dữ liệu lấy vào từ input
  • Hàm widget chịu trách nhiệm hiển thị thiết kế giao diện người dùng hoặc cách tiện ích con (bố cục HTML) của bạn trông giống như giao diện người dùng của trang web.

Và cuối cùng bạn sẽ thực hiện đăng ký widget bằng Action Hook.

Bắc đầu thực hành thôi!

<?php 
class blogPost extends WP_Widget {
 	public function __construct() {
        $widget = array(
            'classname' => 'my_widget',
            'description' => 'Mô tả',
        );
        parent::__construct( 'my_widget', 'Tên Widget', $widget );
    }
// Đăng ký widget
function register_new_widget() {
    register_widget( 'blogPost' );
}
add_action( 'widgets_init', 'register_new_widget' );

Hàm widget

public function widget($args, $instance)
    {
        $title = apply_filters('widget_title', $instance['title']);
        echo $args['before_widget'];
        if (!empty($title))
            echo $args['before_title'] . $title . $args['after_title'];
        echo __($title, 'cw_widget_domain');
        echo $args['after_widget'];
    }

Hàm form

public function form( $instance ) {
        $title = ! empty( $instance['title'] ) ? $instance['title'] : __( 'New title', 'text_domain' );
        ?>
        <p>
        <label for="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>"><?php _e( esc_attr( 'Title:' ) ); ?></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>
        <?php
    }

Hàm update

public function update($new_instance, $old_instance)
{
        $instance          = array();
        $instance['title'] = (!empty($new_instance['title'])) 
                              ? strip_tags($new_instance['title']) : '';
        return $instance;
}

Sau khi thêm xong các đoạn mã trên bạn hãy vào phần Widget để xem đã thêm thành công chưa nhé.

Related Posts

Hướng dẫn cách tắt comment trong wordpress

Trong quá trình xây dựng và quản lý một trang web WordPress, việc tắt chức năng comment có thể là một yêu cầu phổ biến. Điều này…

7 Cách chọn sản phẩm kinh doanh online thành công

7 Cách chọn sản phẩm kinh doanh online thành công

Kinh doanh online bên cạnh những ưu thế thì rủi ro cũng không hề nhỏ, việc bạn tính toán thật kỹ lưỡng trước khi quyết định bán…

Chỉnh sửa Header trong WordPress

Header là khu vực hiển thị phần đầu tiên của trang web. Tại đây nó sẽ hiển Logo, banner, Menu hoặc các mạng xã hội được tích…

doi-mat-khau-admin-wordpress-1

Đổi password admin trong WordPress

Khu vực quản trị của WordPress chỉ admin mới có thể đăng nhập được. Vì thế mật khẩu đóng vai trò quan trọng. Một password sử dụng…

Upload Theme trong Wordpress

Hướng dẫn cách up Theme lên WordPress

Với những người mới bắt đầu học WordPress thường gặp khó khăn khi thay đổi giao diện. Bài viết này sẽ giúp bạn biết cách upload theme,…

Hướng dẫn chỉnh sửa theme WordPress

Trước đây mới làm quen với nền tảng WordPress mình cảm thấy khá khó khăn không biết làm thế nào để chỉnh sửa theme Wordpres, mãi một…