/** * Replace widget shortcode by Widget output * * @param type $widget_shortcode * * @return type */ public static function widget_content($widget_shortcode) { $widget_contents = urldecode($widget_shortcode[0]); // get widget class $element = WR_Pb_Helper_Shortcode::extract_params($widget_contents); if (empty($element['widget_id'])) { return ''; } $widget = $element['widget_id']; // get widget settings parameters $instance = WR_Pb_Helper_Shortcode::extract_widget_params($widget_contents); $args = array('widget_id' => strtolower($widget)); // fix problem of woocommerce global $woocommerce; if (isset($woocommerce) && empty($woocommerce->query)) { $woocommerce->query = new WC_Query(); } // init the widget $w = new $widget(); $sidebars_widgets = wp_get_sidebars_widgets(); // Set a dummy sidebar $sidebars_widgets['dummy_wrpb_sidebar'][] = $w->id_base; wp_set_sidebars_widgets($sidebars_widgets); // ouput ob_start(); the_widget($widget, $instance, $args); $widget_content = ob_get_clean(); return $widget_content; }
if ($el_type == 'element') { echo WR_Pb_Objects_Modal::shortcode_modal_settings($shortcode, $params, isset($el_title) ? $el_title : ''); ?> <form id="frm_shortcode_settings" action="" method="post"> <?php // Render the inputs to store element setting data for Copy style feature foreach ($_POST as $k => $v) { echo '<input type="hidden" id="hid-' . $k . '" name="' . $k . '" value="' . urlencode($v) . '" />'; } echo '<input type="hidden" id="hid-init_tab" name="init_tab" value="styling" />'; ?> </form> <?php } else { if ($el_type == 'widget') { $instance = WR_Pb_Helper_Shortcode::extract_widget_params($params); $instance['title'] = isset($instance['title']) ? $instance['title'] : $el_title; // generate setting form of widget $widget = new $shortcode(); ob_start(); $widget->form($instance); $form = ob_get_clean(); // simplify widget field name $exp = preg_quote($widget->get_field_name('____')); $exp = str_replace('____', '(.*? )', $exp); $form = preg_replace('/' . $exp . '/', '$1', $form); // simplify widget field id $exp = preg_quote($widget->get_field_id('____')); $exp = str_replace('____', '(.*? )', $exp); $form = preg_replace('/' . $exp . '/', '$1', $form); // tab and content generate