5 * @package WordPress |
5 * @package WordPress |
6 * @subpackage Administration |
6 * @subpackage Administration |
7 */ |
7 */ |
8 |
8 |
9 /** |
9 /** |
10 * Display list of the available widgets, either all or matching search. |
10 * Display list of the available widgets. |
11 * |
11 * |
12 * The search parameter are search terms separated by spaces. |
12 * @since 2.5.0 |
13 * |
|
14 * @since unknown |
|
15 * |
|
16 * @param string $show Optional, default is all. What to display, can be 'all', 'unused', or 'used'. |
|
17 * @param string $_search Optional. Search for widgets. Should be unsanitized. |
|
18 */ |
13 */ |
19 function wp_list_widgets() { |
14 function wp_list_widgets() { |
20 global $wp_registered_widgets, $sidebars_widgets, $wp_registered_widget_controls; |
15 global $wp_registered_widgets, $sidebars_widgets, $wp_registered_widget_controls; |
21 |
16 |
22 $sort = $wp_registered_widgets; |
17 $sort = $wp_registered_widgets; |
23 usort( $sort, create_function( '$a, $b', 'return strnatcasecmp( $a["name"], $b["name"] );' ) ); |
18 usort( $sort, '_sort_name_callback' ); |
24 $done = array(); |
19 $done = array(); |
25 |
20 |
26 foreach ( $sort as $widget ) { |
21 foreach ( $sort as $widget ) { |
27 if ( in_array( $widget['callback'], $done, true ) ) // We already showed this multi-widget |
22 if ( in_array( $widget['callback'], $done, true ) ) // We already showed this multi-widget |
28 continue; |
23 continue; |
50 call_user_func_array( 'wp_widget_control', $args ); |
45 call_user_func_array( 'wp_widget_control', $args ); |
51 } |
46 } |
52 } |
47 } |
53 |
48 |
54 /** |
49 /** |
|
50 * Callback to sort array by a 'name' key. |
|
51 * |
|
52 * @since 3.1.0 |
|
53 * @access private |
|
54 */ |
|
55 function _sort_name_callback( $a, $b ) { |
|
56 return strnatcasecmp( $a['name'], $b['name'] ); |
|
57 } |
|
58 |
|
59 /** |
55 * Show the widgets and their settings for a sidebar. |
60 * Show the widgets and their settings for a sidebar. |
56 * Used in the the admin widget config screen. |
61 * Used in the the admin widget config screen. |
57 * |
62 * |
58 * @since unknown |
63 * @since 2.5.0 |
59 * |
64 * |
60 * @param string $sidebar id slug of the sidebar |
65 * @param string $sidebar id slug of the sidebar |
61 */ |
66 */ |
62 function wp_list_widget_controls( $sidebar ) { |
67 function wp_list_widget_controls( $sidebar ) { |
63 add_filter( 'dynamic_sidebar_params', 'wp_list_widget_controls_dynamic_sidebar' ); |
68 add_filter( 'dynamic_sidebar_params', 'wp_list_widget_controls_dynamic_sidebar' ); |
66 |
71 |
67 $description = wp_sidebar_description( $sidebar ); |
72 $description = wp_sidebar_description( $sidebar ); |
68 |
73 |
69 if ( !empty( $description ) ) { |
74 if ( !empty( $description ) ) { |
70 echo "<div class='sidebar-description'>\n"; |
75 echo "<div class='sidebar-description'>\n"; |
71 echo "\t<p class='description'>$description</p>"; |
76 echo "\t<p class='description'>$description</p>"; |
72 echo "</div>\n"; |
77 echo "</div>\n"; |
73 } |
78 } |
74 |
79 |
75 dynamic_sidebar( $sidebar ); |
80 dynamic_sidebar( $sidebar ); |
76 echo "</div>\n"; |
81 echo "</div>\n"; |
77 } |
82 } |
78 |
83 |
79 /** |
84 /** |
80 * {@internal Missing Short Description}} |
85 * {@internal Missing Short Description}} |
81 * |
86 * |
82 * @since unknown |
87 * @since 2.5.0 |
83 * |
88 * |
84 * @param array $params |
89 * @param array $params |
85 * @return array |
90 * @return array |
86 */ |
91 */ |
87 function wp_list_widget_controls_dynamic_sidebar( $params ) { |
92 function wp_list_widget_controls_dynamic_sidebar( $params ) { |
91 |
96 |
92 $widget_id = $params[0]['widget_id']; |
97 $widget_id = $params[0]['widget_id']; |
93 $id = isset($params[0]['_temp_id']) ? $params[0]['_temp_id'] : $widget_id; |
98 $id = isset($params[0]['_temp_id']) ? $params[0]['_temp_id'] : $widget_id; |
94 $hidden = isset($params[0]['_hide']) ? ' style="display:none;"' : ''; |
99 $hidden = isset($params[0]['_hide']) ? ' style="display:none;"' : ''; |
95 |
100 |
96 $params[0]['before_widget'] = "<div id='widget-${i}_$id' class='widget'$hidden>"; |
101 $params[0]['before_widget'] = "<div id='widget-{$i}_{$id}' class='widget'$hidden>"; |
97 $params[0]['after_widget'] = "</div>"; |
102 $params[0]['after_widget'] = "</div>"; |
98 $params[0]['before_title'] = "%BEG_OF_TITLE%"; // deprecated |
103 $params[0]['before_title'] = "%BEG_OF_TITLE%"; // deprecated |
99 $params[0]['after_title'] = "%END_OF_TITLE%"; // deprecated |
104 $params[0]['after_title'] = "%END_OF_TITLE%"; // deprecated |
100 if ( is_callable( $wp_registered_widgets[$widget_id]['callback'] ) ) { |
105 if ( is_callable( $wp_registered_widgets[$widget_id]['callback'] ) ) { |
101 $wp_registered_widgets[$widget_id]['_callback'] = $wp_registered_widgets[$widget_id]['callback']; |
106 $wp_registered_widgets[$widget_id]['_callback'] = $wp_registered_widgets[$widget_id]['callback']; |
153 } else { |
158 } else { |
154 $query_arg['sidebar'] = $sidebar_id; |
159 $query_arg['sidebar'] = $sidebar_id; |
155 $query_arg['key'] = $key; |
160 $query_arg['key'] = $key; |
156 } |
161 } |
157 |
162 |
158 // We aren't showing a widget control, we're outputing a template for a mult-widget control |
163 // We aren't showing a widget control, we're outputting a template for a multi-widget control |
159 if ( isset($sidebar_args['_display']) && 'template' == $sidebar_args['_display'] && $widget_number ) { |
164 if ( isset($sidebar_args['_display']) && 'template' == $sidebar_args['_display'] && $widget_number ) { |
160 // number == -1 implies a template where id numbers are replaced by a generic '__i__' |
165 // number == -1 implies a template where id numbers are replaced by a generic '__i__' |
161 $control['params'][0]['number'] = -1; |
166 $control['params'][0]['number'] = -1; |
162 // with id_base widget id's are constructed like {$id_base}-{$id_number} |
167 // with id_base widget id's are constructed like {$id_base}-{$id_number} |
163 if ( isset($control['id_base']) ) |
168 if ( isset($control['id_base']) ) |
200 <div class="alignleft"> |
205 <div class="alignleft"> |
201 <a class="widget-control-remove" href="#remove"><?php _e('Delete'); ?></a> | |
206 <a class="widget-control-remove" href="#remove"><?php _e('Delete'); ?></a> | |
202 <a class="widget-control-close" href="#close"><?php _e('Close'); ?></a> |
207 <a class="widget-control-close" href="#close"><?php _e('Close'); ?></a> |
203 </div> |
208 </div> |
204 <div class="alignright<?php if ( 'noform' === $has_form ) echo ' widget-control-noform'; ?>"> |
209 <div class="alignright<?php if ( 'noform' === $has_form ) echo ' widget-control-noform'; ?>"> |
205 <img src="images/wpspin_light.gif" class="ajax-feedback " title="" alt="" /> |
210 <img src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" class="ajax-feedback" title="" alt="" /> |
206 <input type="submit" name="savewidget" class="button-primary widget-control-save" value="<?php esc_attr_e('Save'); ?>" /> |
211 <?php submit_button( __( 'Save' ), 'button-primary widget-control-save', 'savewidget', false, array( 'id' => 'widget-' . esc_attr( $id_format ) . '-savewidget' ) ); ?> |
207 </div> |
212 </div> |
208 <br class="clear" /> |
213 <br class="clear" /> |
209 </div> |
214 </div> |
210 </form> |
215 </form> |
211 </div> |
216 </div> |