示例#1
0
 /**
  * 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;
 }
示例#2
0
    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