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.
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.
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
- Toán tử tam phân (toán tử tam ngôi hay toán tử điều kiện) trong PHP | Hơn 100 bài tập PHP có giải hay nhất tại TopVn
- PAS: Công thức Copywriting cổ điển nhưng vẫn hoạt động hiệu quả
- Thành công nhờ khởi nghiệp bằng game – Không có gì là không thể
- [WooCommerce] Ẩn giá khi chưa đăng nhập
- Nàng công chúa 50 tuổi vẫn rơi vào lưới tình của cậu thiếu niên 13