Thêm custom fields vào mọi wordpress widgets

Quảng cáo
Ads_ngang
Website dinhthuanit.com có bài Thêm custom fields vào mọi wordpress widgets

Khách hàng của chúng tôi đều đặn hỏi thế nào để thêm options mới vào mọi widget có trong sidebar ví dụ như trường color, background,…Nếu bạn đã sử dụng qua plugin widget_logic thì không vượt quá xa lạ wordpress cung cấp hook cho phép bạn tùy chỉnh options thêm custom fields mới vào mọi widget mà bạn đăng ký vào sidebar. Ứng dụng tiêu biểu như, bạn có thể chỉ định hiển thị widgets cho mỗi trang trong website wordpress sử dụng plugin widget_logic.

Tạo custom fields cho widget

Trong bài hôm nay mình sẽ dậy các bạn tự thêm fields options vào widgets không cần dùng plugin.
extended_textwidget
Cũng giống quy trình thêm các fields vào post type, chúng ta cần 2 hook, chèn thêm fields vào hook hiển thị options của widget và hook đọng lại các options vừa mới tạo.

 //Add input fields(priority 5, 3 parameters) add_action('in_widget_form', 'hw_in_widget_form',5,3); //Callback function for options update (priorität 5, 3 parameters) add_filter('widget_update_callback', 'hw_in_widget_form_update',5,3);  

Tạo option mới giống như cách bạn viết code widget có thừa hưởng class WP_Widget, truyền các biến của lớp định nghĩa widget sẽ sửa thêm vô hàm liên kết với hook in_widget_form sẽ giúp bạn tiếp tục thành lập phần cài đặt fields widget.

 function hw_in_widget_form($t,$return,$instance){ $instance = wp_parse_args( (array) $instance, array( 'title' =>  '', 'text' =>  '', 'float' =>  'none') ); if ( !isset($instance['float']) ) $instance['float'] = null; if ( !isset($instance['texttest']) ) $instance['texttest'] = null; ?>   

get_field_id('width'); ?> " name=" get_field_name('width'); ?> " type="checkbox" no numeric noise key 1018 /> <label for=" get_field_id('width'); ?> ">

<label for=" get_field_id('float'); ?> "> Float: get_field_id('float'); ?> " name=" get_field_name('float'); ?> "> none left right

<input type="text" name=" get_field_name('texttest'); ?> " > get_field_id('texttest'); ?> " value=" " /> <?php $retrun = null; return array($t,$return,$instance); }

Tham số $t là đối tượng instance của lớp widget. Hàm cần trả về mảng thứ tự giá trị của 3 tham số truyền vào hàm đã sửa đổi bởi hàm, trong đấy có biến $instance , khai báo cho option tạo mới.

Để lưu lại dữ liệu fields mở rộng wordpress gọi filter hook widget_update_callback trong phương thức update rồi cho bạn sử lý tiếp các giá trị option trước khi gói gọn cập nhật vào database .

 function hw_in_widget_form_update($instance, $new_instance, $old_instance){ $instance['width'] = isset($new_instance['width']); $instance['float'] = $new_instance['float']; $instance['texttest'] = strip_tags($new_instance['texttest']); return $instance; }  

Tùy biến widget với option ngoài

Bạn chưa được phép can thiệp trực tiếp vào nội dung của widget có tạo trước đó, mỗi widget tạo nên bởi wordpress hoặc plugin bạn cài vào website sẽ thực hiện một công việc nhất định, nhưng bạn cũng đều có thể can thiệp giao diện bằng cách thay đổi các tính chất trước khi hiển thị widget, thậm trí dữ liệu của widget.
Xem thêm các ví dụ cụ thể tại bài viết: Tùy biến sidebar widget params thêm class chỉ số đếm cho widget.
Từ tin tức option mới, bạn có thể sửa lại thông số của sidebar như: before_widget, before_title…

 add_filter('dynamic_sidebar_params', 'hw_dynamic_sidebar_params'); function hw_dynamic_sidebar_params($params){ global $wp_registered_widgets; $widget_id = $params[0]['widget_callback'][0]-> option_name); $widget_num = $widget_obj['params'][0]['number']; if (isset($widget_opt[$widget_num]['background'])){ $float = $widget_opt[$widget_num]['background']; $params[0]['before_widget'] = preg_replace('/'.$float.' custom-field ', $params[0]['before_widget'], 1); } return $params; }  

Kết quả giống như thế này.
extended_output
extended_textwidget

Bài viết Thêm custom fields vào mọi wordpress widgets được tổng hợp và biên tập bởi: dinhthuanit.com. Mọi ý kiến đóng góp và phản hồi vui lòng gửi Liên Hệ cho dinhthuanit.com để điều chỉnh. dinhthuanit.com xin cảm ơn.

Bài Viết Liên Quan


Bài Viết Khác


Quảng cáo
Ads_ngang