20 $sort = $wp_registered_widgets; |
20 $sort = $wp_registered_widgets; |
21 usort( $sort, '_sort_name_callback' ); |
21 usort( $sort, '_sort_name_callback' ); |
22 $done = array(); |
22 $done = array(); |
23 |
23 |
24 foreach ( $sort as $widget ) { |
24 foreach ( $sort as $widget ) { |
25 if ( in_array( $widget['callback'], $done, true ) ) { // We already showed this multi-widget |
25 if ( in_array( $widget['callback'], $done, true ) ) { // We already showed this multi-widget. |
26 continue; |
26 continue; |
27 } |
27 } |
28 |
28 |
29 $sidebar = is_active_widget( $widget['callback'], $widget['id'], false, false ); |
29 $sidebar = is_active_widget( $widget['callback'], $widget['id'], false, false ); |
30 $done[] = $widget['callback']; |
30 $done[] = $widget['callback']; |
49 if ( $sidebar ) { |
49 if ( $sidebar ) { |
50 $args['_hide'] = '1'; |
50 $args['_hide'] = '1'; |
51 } |
51 } |
52 } |
52 } |
53 |
53 |
54 $args = wp_list_widget_controls_dynamic_sidebar( |
54 $control_args = array( |
55 array( |
55 0 => $args, |
56 0 => $args, |
56 1 => $widget['params'][0], |
57 1 => $widget['params'][0], |
|
58 ) |
|
59 ); |
57 ); |
60 call_user_func_array( 'wp_widget_control', $args ); |
58 $sidebar_args = wp_list_widget_controls_dynamic_sidebar( $control_args ); |
|
59 |
|
60 wp_widget_control( ...$sidebar_args ); |
61 } |
61 } |
62 } |
62 } |
63 |
63 |
64 /** |
64 /** |
65 * Callback to sort array by a 'name' key. |
65 * Callback to sort array by a 'name' key. |
140 $id = isset( $params[0]['_temp_id'] ) ? $params[0]['_temp_id'] : $widget_id; |
138 $id = isset( $params[0]['_temp_id'] ) ? $params[0]['_temp_id'] : $widget_id; |
141 $hidden = isset( $params[0]['_hide'] ) ? ' style="display:none;"' : ''; |
139 $hidden = isset( $params[0]['_hide'] ) ? ' style="display:none;"' : ''; |
142 |
140 |
143 $params[0]['before_widget'] = "<div id='widget-{$i}_{$id}' class='widget'$hidden>"; |
141 $params[0]['before_widget'] = "<div id='widget-{$i}_{$id}' class='widget'$hidden>"; |
144 $params[0]['after_widget'] = '</div>'; |
142 $params[0]['after_widget'] = '</div>'; |
145 $params[0]['before_title'] = '%BEG_OF_TITLE%'; // deprecated |
143 $params[0]['before_title'] = '%BEG_OF_TITLE%'; // Deprecated. |
146 $params[0]['after_title'] = '%END_OF_TITLE%'; // deprecated |
144 $params[0]['after_title'] = '%END_OF_TITLE%'; // Deprecated. |
|
145 |
147 if ( is_callable( $wp_registered_widgets[ $widget_id ]['callback'] ) ) { |
146 if ( is_callable( $wp_registered_widgets[ $widget_id ]['callback'] ) ) { |
148 $wp_registered_widgets[ $widget_id ]['_callback'] = $wp_registered_widgets[ $widget_id ]['callback']; |
147 $wp_registered_widgets[ $widget_id ]['_callback'] = $wp_registered_widgets[ $widget_id ]['callback']; |
149 $wp_registered_widgets[ $widget_id ]['callback'] = 'wp_widget_control'; |
148 $wp_registered_widgets[ $widget_id ]['callback'] = 'wp_widget_control'; |
150 } |
149 } |
151 |
150 |
189 function wp_widget_control( $sidebar_args ) { |
188 function wp_widget_control( $sidebar_args ) { |
190 global $wp_registered_widgets, $wp_registered_widget_controls, $sidebars_widgets; |
189 global $wp_registered_widgets, $wp_registered_widget_controls, $sidebars_widgets; |
191 |
190 |
192 $widget_id = $sidebar_args['widget_id']; |
191 $widget_id = $sidebar_args['widget_id']; |
193 $sidebar_id = isset( $sidebar_args['id'] ) ? $sidebar_args['id'] : false; |
192 $sidebar_id = isset( $sidebar_args['id'] ) ? $sidebar_args['id'] : false; |
194 $key = $sidebar_id ? array_search( $widget_id, $sidebars_widgets[ $sidebar_id ] ) : '-1'; // position of widget in sidebar |
193 $key = $sidebar_id ? array_search( $widget_id, $sidebars_widgets[ $sidebar_id ], true ) : '-1'; // Position of widget in sidebar. |
195 $control = isset( $wp_registered_widget_controls[ $widget_id ] ) ? $wp_registered_widget_controls[ $widget_id ] : array(); |
194 $control = isset( $wp_registered_widget_controls[ $widget_id ] ) ? $wp_registered_widget_controls[ $widget_id ] : array(); |
196 $widget = $wp_registered_widgets[ $widget_id ]; |
195 $widget = $wp_registered_widgets[ $widget_id ]; |
197 |
196 |
198 $id_format = $widget['id']; |
197 $id_format = $widget['id']; |
199 $widget_number = isset( $control['params'][0]['number'] ) ? $control['params'][0]['number'] : ''; |
198 $widget_number = isset( $control['params'][0]['number'] ) ? $control['params'][0]['number'] : ''; |
222 |
221 |
223 /* |
222 /* |
224 * We aren't showing a widget control, we're outputting a template |
223 * We aren't showing a widget control, we're outputting a template |
225 * for a multi-widget control. |
224 * for a multi-widget control. |
226 */ |
225 */ |
227 if ( isset( $sidebar_args['_display'] ) && 'template' == $sidebar_args['_display'] && $widget_number ) { |
226 if ( isset( $sidebar_args['_display'] ) && 'template' === $sidebar_args['_display'] && $widget_number ) { |
228 // number == -1 implies a template where id numbers are replaced by a generic '__i__' |
227 // number == -1 implies a template where id numbers are replaced by a generic '__i__'. |
229 $control['params'][0]['number'] = -1; |
228 $control['params'][0]['number'] = -1; |
230 // With id_base widget id's are constructed like {$id_base}-{$id_number}. |
229 // With id_base widget id's are constructed like {$id_base}-{$id_number}. |
231 if ( isset( $control['id_base'] ) ) { |
230 if ( isset( $control['id_base'] ) ) { |
232 $id_format = $control['id_base'] . '-__i__'; |
231 $id_format = $control['id_base'] . '-__i__'; |
233 } |
232 } |
242 echo $sidebar_args['before_widget']; |
241 echo $sidebar_args['before_widget']; |
243 ?> |
242 ?> |
244 <div class="widget-top"> |
243 <div class="widget-top"> |
245 <div class="widget-title-action"> |
244 <div class="widget-title-action"> |
246 <button type="button" class="widget-action hide-if-no-js" aria-expanded="false"> |
245 <button type="button" class="widget-action hide-if-no-js" aria-expanded="false"> |
247 <span class="screen-reader-text edit"><?php printf( __( 'Edit widget: %s' ), $widget_title ); ?></span> |
246 <span class="screen-reader-text edit"> |
248 <span class="screen-reader-text add"><?php printf( __( 'Add widget: %s' ), $widget_title ); ?></span> |
247 <?php |
|
248 /* translators: %s: Widget title. */ |
|
249 printf( __( 'Edit widget: %s' ), $widget_title ); |
|
250 ?> |
|
251 </span> |
|
252 <span class="screen-reader-text add"> |
|
253 <?php |
|
254 /* translators: %s: Widget title. */ |
|
255 printf( __( 'Add widget: %s' ), $widget_title ); |
|
256 ?> |
|
257 </span> |
249 <span class="toggle-indicator" aria-hidden="true"></span> |
258 <span class="toggle-indicator" aria-hidden="true"></span> |
250 </button> |
259 </button> |
251 <a class="widget-control-edit hide-if-js" href="<?php echo esc_url( add_query_arg( $query_arg ) ); ?>"> |
260 <a class="widget-control-edit hide-if-js" href="<?php echo esc_url( add_query_arg( $query_arg ) ); ?>"> |
252 <span class="edit"><?php _ex( 'Edit', 'widget' ); ?></span> |
261 <span class="edit"><?php _ex( 'Edit', 'widget' ); ?></span> |
253 <span class="add"><?php _ex( 'Add', 'widget' ); ?></span> |
262 <span class="add"><?php _ex( 'Add', 'widget' ); ?></span> |
297 </div> |
306 </div> |
298 <?php echo $after_form; ?> |
307 <?php echo $after_form; ?> |
299 </div> |
308 </div> |
300 |
309 |
301 <div class="widget-description"> |
310 <div class="widget-description"> |
302 <?php echo ( $widget_description = wp_widget_description( $widget_id ) ) ? "$widget_description\n" : "$widget_title\n"; ?> |
311 <?php |
|
312 $widget_description = wp_widget_description( $widget_id ); |
|
313 echo ( $widget_description ) ? "$widget_description\n" : "$widget_title\n"; |
|
314 ?> |
303 </div> |
315 </div> |
304 <?php |
316 <?php |
305 echo $sidebar_args['after_widget']; |
317 echo $sidebar_args['after_widget']; |
306 |
318 |
307 return $sidebar_args; |
319 return $sidebar_args; |