/** * add module tab menu * @param $module * @param $menu */ public static function add_feature_tab_submenu_page($feature, $menu) { //valid if (!HW_AWC_WidgetFeatures::get_features_data($feature)) { return; } //module not found if (!isset(self::$menus[$feature]['features_tab_menus'])) { self::$menus[$feature]['features_tab_menus'] = array(); } if (!isset(self::$menus[$feature]['features_tab_menus'][$feature])) { self::$menus[$feature]['features_tab_menus'][$feature] = $menu; } }
/** * custom widget callback */ public function _hw_custom_widget_callback_function() { global $wp_registered_widgets; $original_callback_params = func_get_args(); $widget_id = $original_callback_params[0]['widget_id']; $widget_obj = $wp_registered_widgets[$widget_id]; $original_callback = $widget_obj['original_callback']; $wp_registered_widgets[$widget_id]['callback'] = $original_callback; //widget object $widget = $widget_obj['original_callback'][0]; $widget_opt = get_option($widget_obj['original_callback'][0]->option_name); $widget_num = $widget_obj['params'][0]['number']; $instance = $widget_opt[$widget_num]; //get current widget instance $widget_id_base = $wp_registered_widgets[$widget_id]['callback'][0]->id_base; //do widget features #$features = array('fixed_widget'); /*$feature = HW_AWC::get_widget_feature($widget, 'fancybox'); if($feature && HW_AWC::check_widget_feature($widget, 'fancybox') && $feature->is_active($instance) ) { if(method_exists($feature, 'do_widget_feature_frontend')) { $feature->do_widget_feature_frontend($widget, $instance); } }*/ $all_features = HW_AWC_WidgetFeatures::get_all_features(); $widgets_fields = HW_AWC_WidgetFeatures::get_features_data(); foreach ($all_features as $name => $text) { if (isset($widgets_fields[$name]) && is_array($widgets_fields[$name])) { foreach ($widgets_fields[$name] as $widg) { if ($widget == $widg['widget'] || $widg['widget']->id_base == $widget->id_base && $widg['widget']->number == $widget->number) { $feature = $widg['class']; $active = true; if (method_exists($feature, 'is_active')) { //check active widget feature $active = $feature->is_active($instance); } if ($active && method_exists($feature, 'do_widget_feature_frontend')) { $feature->do_widget_feature_frontend($widget, $instance); } } } } } if (is_callable($original_callback)) { ob_start(); call_user_func_array($original_callback, $original_callback_params); $widget_output = ob_get_clean(); echo apply_filters('hw_widget_output', $widget_output, $widget_id_base, $widget_id); } }