-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathCustom_Widget.sample.php
125 lines (108 loc) · 3.37 KB
/
Custom_Widget.sample.php
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<?php
/**
* Widget
*
* Creates a Widget to be added in the sidebar.
* This is a template class. To create your own widget, duplicate this class and add your own $title, $description, $fields.
*
* Hint: You can use any input types to save your widget fields, display static information, or even WP perform queries! Happy coding!
*
* Example usage:
* function register_widget() {
* register_widget( 'Custom_Widget' );
* }
* add_action( 'widgets_init', 'register_widget' );
*
* Required: Utils.php
*/
require_once 'Utils.php';
class Custom_Widget extends WP_Widget{
private $slug, $title, $description, $class;
private $fields;
function __construct($args = array()) {
$args = array_merge ( array(
"title" => 'Custom Widget',
"description" => 'A widget that displays the authors name ',
"class" => 'hyperion_widget'
), $args );
$this->slug = Utils::generate_slug($args['title']);
$this->title = $args['title'];
$this->description = $args['description'];
$this->class = $args['class'];
$this->fields = array('blablabla');
parent::__construct( false, $this->title );
}
function Custom_Widget() {
$widget_ops = array(
'classname' => $this->class,
'description' => $this->description
);
$control_ops = array(
'width' => 300,
'height' => 350,
'id_base' => $this->class
);
$this->WP_Widget( $this->slug, $this->title, $widget_ops, $control_ops );
}
/**
* Front-end display of widget (print the widget)
*
* @see WP_Widget::widget()
*
* @param array $args Widget arguments.
* @param array $instance Saved values from database.
*/
function widget( $args, $instance ) {
extract( $args );
$title = apply_filters( 'widget_title', $instance['title'] );
echo $before_widget;
if ( $title )
echo $before_title . $title . $after_title;
foreach( $this->fields as $field ){
echo $instance[$field] ? $instance[$field] : "";
}
echo $after_widget;
}
/**
* Sanitize widget form values as they are saved.
*
* @see WP_Widget::update()
*
* @param array $new_instance Values just sent to be saved.
* @param array $old_instance Previously saved values from database.
*
* @return array Updated safe values to be saved.
*/
function update( $new_instance, $old_instance ) {
$instance = $old_instance;
//Strip tags from title and name to remove HTML
$instance['title'] = strip_tags( $new_instance['title'] );
foreach($this->fields as $field){
$instance[$field] = strip_tags( $new_instance[$field] );
}
return $instance;
}
/**
* Back-end widget form.
*
* @see WP_Widget::form()
*
* @param array $instance Previously saved values from database.
*/
function form( $instance ) {
//Set up some default widget settings.
$instance = (array) $instance;
?>
<p>
<label for="<?php echo $this->get_field_id( 'title' ); ?>">Title:</label>
<input id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo $instance['title']; ?>" style="width:100%;" />
</p>
<?php foreach($this->fields as $field){ ?>
<p>
<label for="<?php echo $this->get_field_id( $field ); ?>"><?php echo $field; ?>:</label>
<input id="<?php echo $this->get_field_id( $field ); ?>" name="<?php echo $this->get_field_name( $field ); ?>" value="<?php echo $instance[$field]; ?>" style="width:100%;" />
</p>
<?php
}
}
}