widget.php
2.0 KB
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
<?php
/**
* @class FLWidgetModule
*/
class FLWidgetModule extends FLBuilderModule {
/**
* @method __construct
*/
public function __construct()
{
parent::__construct(array(
'name' => __('Widget', 'fl-builder'),
'description' => __('Display a WordPress widget.', 'fl-builder'),
'category' => __('WordPress Widgets', 'fl-builder'),
'editor_export' => false,
'partial_refresh' => true
));
}
/**
* @method update
*/
public function update( $settings )
{
global $wp_widget_factory;
// Make sure we have a widget.
if ( ! isset( $settings->widget ) || ! isset( $wp_widget_factory->widgets[ $settings->widget ] ) ) {
return $settings;
}
// Get the widget instance.
$factory = $wp_widget_factory->widgets[ $settings->widget ];
$class = get_class( $factory );
$instance = new $class( $factory->id_base, $factory->name, $factory->widget_options );
// Get the widget settings.
$settings_key = 'widget-' . $instance->id_base;
$widget_settings = array();
if ( isset( $settings->$settings_key ) ) {
$widget_settings = ( array )$settings->$settings_key;
}
// Run the widget update method.
$widget_settings = $instance->update( $widget_settings, array() );
// Save the widget settings as an object.
if ( is_array( $widget_settings ) ) {
$settings->$settings_key = ( object )$widget_settings;
}
// Delete the WordPress cache for this widget.
wp_cache_delete( $settings->widget, 'widget' );
// Return the settings.
return $settings;
}
}
/**
* Register the module and its form settings.
*/
FLBuilder::register_module('FLWidgetModule', array(
'general' => array( // Tab
'title' => __('General', 'fl-builder'), // Tab title
'file' => FL_BUILDER_DIR . 'modules/widget/includes/settings-general.php'
)
));